BBASMPlatformAdapterProtocol.h 6.91 KB
//
//  BBASMPlatformAdapterProtocol.h
//  SWAN
//
//  Created by baidu on 2018/9/11.
//  Copyright © 2018年 baidu. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "BBASMAdapterBaseImplement.h"

@protocol BBASMPlatformAdapterProtocol <NSObject>

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

/// 获取设备唯一标识,百度系的产品使用cuid生成,开源宿主使用自己的生成规则
+ (NSString *)getDeviceIdentity;

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

@optional

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

/// @brief private:宿主通过该接口可以设置当前是否是青少年模式。手百青少年模式下菜单面板中去掉消息/分享/添加收藏/全部通知/全部私信功能入口, 屏蔽分享、关注功能
/// @return YES:青少年模式  NO:非青少年模式,默认是NO非青少年模式
+ (BOOL)isTeenagerStyle;

#pragma mark extension接口

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

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

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

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

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

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

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

///  private:百度系产品;mtj的唯一标识
+ (NSString *)mtjCUID;

/**
 * @brief 自定义UA,不带webview信息,可以根据需要自行扩展
 *
 * @return NSString,自定义UA
 */
+ (NSString *)commonUserAgent;
/**
 * @brief webView UA navigator.userAgent
 *
 * @return NSString,webView UA
 */
+ (NSString *)webViewUserAgent;

/**
 * @brief 获取预置小程序/小游戏包的完整文件夹路径
 * @return 返回预置小程序/小游戏包的完整文件夹路径
 */
+ (NSString *)presetSmartAppRootPath;

/**
* @brief 是否不使用预置的小程序/游戏运行时环境
* @return YES:不使用;NO:使用,默认为NO
*/
+ (BOOL)isNoUsePresetCore;

#pragma mark - OpenApp涉及的相关平台参数

/// Ali baichuan平台注册的appKey
+ (NSString *)baichuanAppKey;

/// Ali baichuan平台注册的appName
+ (NSString *)baichuanAppName;


#pragma mark - 消息push

/**
* @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;

/**
* @brief 在调用openAppByUrl能力时,是否检查宿主info.plist中配置的LSApplicationQueriesSchemes
*
* @return NO:默认不检查(存在首次弹窗提示,点击取消按钮依然会跳转到app store),YES:检查(存在badcase:宿主没有配置支持的app的scheme,无法调起app)
*/
+ (BOOL)isVerifySupportAppScheme;

/**
 * @brief private:百度系产品可用;远程调试是否发起鉴权请求;与登录账号有关,不使用百度账号登录的宿主,不需要鉴权请求,可以不实现这个接口,直接鉴权成功;使用百度账号的宿主方要使用远程调试功能,必须强制实现鉴权请求
 * @return BOOL 是否发起鉴权请求,默认不发起鉴权请求,直接鉴权成功
 */
+ (BOOL)isOpenRemoteDebugAuthorizeRequest;

/**
 * @brief 宿主启动添加延时操作
 * @param delayBlock 延时操作block
 * @param processName block标记符
 * @param  mainThread 是否在主线程运行
 */
+ (void)delayLaunchBusiness:(void (^)(void))delayBlock processName:(NSString *)processName mainThread:(BOOL)mainThread;

/**
 * @brief 向ufo端口直接发起日志上传,不经过h5页面
 *
 * @param params 上传的ufo参数
 */
+ (void)uploadLocalLogWithParams:(NSMutableDictionary *)params
                         success:(void(^)(void))successBlock
                         failure:(void(^)(NSString *errorDescription))failureBlock;

/// @brief 设备静态评分,0.0~1.0,手百提供的默认值0.8,获取不到时返回 -1.0
+ (float)staticDeviceScore;

/// 设备动态评分(0.0~1.0,数据量不够时返回-1.0)
+ (float)dynamicDeviceScore;

/// 设备综合评分(0.0~1.0,默认值0.8)
+ (float)overallDeviceScore;

/**
 * @brief 设备机型评价,宿主根据自身策略对当前设备进行评级(-1未知 1低端机 2中端机 3高端机)比如iphone6系列为低端机,iphone8系列为中端机,iphone11系列为高端机,或实现更加精准的设备评级策略
 * @return 设备机型评级 
 */
+ (NSString *)performanceLevel;

/// 跳转清理磁盘页面
/// @param appID  小程序 ID
+ (void)jumpToCleanDiskPage:(NSString *)appID;

/// 获取百度APP当前隐私授权的状态 0:用户尚未作出选择 1:用户已授权隐私协议 2:仅浏览模式
+ (NSString *)getCurrentPrivacyMode;

/// 获取手百启动策略染色ID
+ (NSString *)getLaunchDyeId;

@end