开发

配置

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 。