配置
1.1 协议名
BBASMPlatformAdapterProtocol
1.2 功能说明
配置小程序框架运行环境的参数、Extension 配置、预置小程序、自定义 userAgent 、端能力描述、小程序 & 小游戏生命周期。
1.3 接口列表
宿主方的配置信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| @required /* * @brief 设置宿主方的配置信息,来源于开源B端平台下发的配置数据(json) * @return NSDictionary,格式:{@"officialNo":联盟标识(百度系的为1), * @"containerNo":渠道号(标识宿主来源), * @"hostName":宿主名称(手百为baiduboxapp), * @"schemeHead":宿主协议头(手百为baiduboxapp), * @"shareCallBackUrl":宿主方分享回调地址(手百默认从swan core中取), * @"version":@(1)(配置信息版本号)} */ + (NSDictionary *)hostConfig;
/** * @brief 获取端能力描述表需要存放的完整路径(zip文件) * @return 返回端能力描述表存放的完整路径 */ + (NSString *)pluginDescriptionPath;
|
Extension 配置
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
| @optional /** * @brief 指定宿主对extension版本号的支持规则 * * @return NSString,extension版本号的支持规则 */ + (nullable NSString *)extensionRule;
/** * @brief 宿主私有端能力可以挂在宿主自己的命名空间下,需要保证该字段与私有端能力描述表name的前缀一致 * * @return NSString */ + (nullable NSString *)getExtensionName;
/** * @brief 获取预置extension包文件的完整路径,要求文件格式是zip * @return 返回预置extension包的完整路径 */ + (nullable NSString *)presetExtensionPackageBundlePath;
/** * @brief 获取预置extension包版本号 * @return 返回预置extension包版本号 */ + (nullable NSString *)presetExtensionPackageVersion;
|
预置小程序 & 小游戏包、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;
|
生命周期
宿主根据业务需求,决定是否实现这些接口。
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 28
| @optional /** * @brief 小程序&小游戏初始化入口 * */ + (void)initLifeCycle;
/** * @brief 当前小程序&小游戏进入前台 * * @param appKey 小程序&小游戏的appKey */ + (void)onLifeCycleForeground:(NSString *)appKey;
/** * @brief 当前小程序&小游戏进入后台 * * @param appKey 小程序&小游戏的appKey */ + (void)onLifeCycleBackground:(NSString *)appKey;
/** * @brief 当前小程序&小游戏加载失败时,是否使用小程序默认错误页面 * * @param error 失败信息 * @return 宿主方回调决定是否使用小程序默认错误页面,如果不使用(宿主自己定制错误页),返回YES;如果使用,返回NO,或者不实现该方法 */ + (BOOL)onLifeCycleFailed:(NSError *)error;
|
消息推送
方便宿主 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 。