开发

配置

1.1 协议名

BBASMPlatformAdapterProtocol

1.2 功能说明

配置小程序框架运行环境的参数、Extension 配置、预置小程序、自定义 userAgent 、端能力描述

1.3 接口列表

宿主方的配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
@required

/**
* @brief 设置宿主方的配置信息的union-cfg.json文件路径,来源于开源平台下的宿主配置数据,在小程序SDK2.26版替换“+ (NSDictionary *)hostConfig”接口
* @return NSString 返回当前宿主的union-cfg.json的文件路径
*/
+ (NSString *)hostConfigFilePath;

/**
* @brief 获取端能力描述表需要存放的完整路径(zip文件)
* @return 返回端能力描述表存放的完整路径
*/
+ (NSString *)pluginDescriptionPath;

Extension 配置

【注】从SDK2.29.0版本,以下扩展接口宿主不需要实现,扩展的extension.js包不需要预置到宿主工程中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@optional

/**
* @brief 宿主私有端能力可以挂在宿主自己的命名空间下,需要保证该字段与私有端能力描述表name的前缀一致
*
* @return NSString
*/
+ (nullable NSString *)getExtensionName;

/**
* @brief 获取预置extension包文件的完整路径,要求文件格式是zip
* @return 返回预置extension包的完整路径
*/
+ (nullable NSString *)presetExtensionPackageBundlePath;

/**
* @brief 获取预置extension包版本号
* @return 返回预置extension包版本号
*/
+ (nullable NSString *)presetExtensionPackageVersion;

/**
* @brief 获取预置extension包版本 code
*
* @return extension包版本 code
*/
+ (NSNumber *)presetExtensionPKGVersionCode;

预置小程序 & 小游戏包、SWANJS 包

1
2
3
4
5
6
7
8
9
10
11
12
@optional
/**
* @brief 获取预置小程序/小游戏包的完整文件夹路径
* @return 返回预置小程序/小游戏包的完整文件夹路径
*/
+ (NSString *)presetSmartAppRootPath;

/**
* @brief 是否不使用预置的小程序/游戏运行时环境(做包体积优化实现这个接口)
* @return YES:不使用;NO:使用,默认为NO
*/
+ (BOOL)isNoUsePresetCore;

自定义 userAgent

【注】微信 H5 直联支付时,如果宿主的配置信息中的 schemeHead 与微信开发者平台里设置的打开宿主 App 的协议头不匹配,需要实现 commonUserAgent 接口,保持与微信开发者平台里设置一致。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@optional
/**
* @brief 自定义UA,不带webview信息,可以根据需要自行扩展
*
* @return NSString,自定义UA
*/
+ (nullable NSString *)commonUserAgent;

/**
* @brief webView UA navigator.userAgent
*
* @return NSString,webView UA
*/
+ (nullable NSString *)webViewUserAgent;

消息推送

方便宿主 server 与小程序建立映射关系,在发起 formid 、直连支付、聚合支付成功后,把当前小程序的标识传递出来。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* @brief 方便宿主server与小程序建立映射关系,在发起formid、直连支付、聚合支付成功后,向宿主发起回调,宿主如果实现该接口,需要将message传给自己的server
*
* @param message push信息 ,未登录时传swanid
* @message
* @{
* @"swanid": @"传swanid",
* @"appKey": @"小程序的appKey",
* @"hostName": @"宿主的在小程序平台的标识名称"
* }
*/
+ (void)pushSMIdToHost:(NSDictionary *)message;

/**
* @brief 方便宿主server与小程序建立映射关系,在发起formid、直连支付、聚合支付成功后,向宿主发起回调,宿主如果实现该接口,需要将message传给自己的server
*
* @param message push信息 ,登录时传openid
* @message
* @{
* @"openid": @"传openid",
* @"appKey": @"小程序的appKey",
* @"hostName": @"宿主的在小程序平台的标识名称"
* }
*/
+ (void)pushOpenIdToHost:(NSDictionary *)message;

三方库初始化

在宿主中启动入口,注册小程序运行时环境进行时,会提前初始化一些库,势必会引起这些库初始化冲突问题,为此,提供可选是否初始化接口。

1
2
3
4
5
6
/**
* @brief private:解决百度系内部产品共同初始化BDPAppearance库,引起冲突(该方法仅在百度系宿主可使用, 外部宿主方不必实现)
*
* @return NO: 小程序内部需要初始化BDPAppearance库(默认NO), YES:宿主必须自己初始化BDPAppearance库
*/
+ (BOOL)shouldNotInitBDPAppearance;

1.4 示例

参考:BBASMPlatformImplement