BBASchemeDescriptionManager.h 3 KB
//
//  BBASchemeDescriptionManager.h
//  BBASchemeDispatcherExt
//
//  Created by Wang,Peng(MAD) on 2019/3/15.
//  Copyright © 2019年 Baidu. All rights reserved.
/*
 * 描述表管理类,通过传入的路径加载描述表信息
 * 业务通过接口获取描述表list 注入到webcore中,达到对前端暴露api的目的
 * 收集方案见 http://agroup.baidu.com/mobilebaidu/md/article/1663718
 */

#import <Foundation/Foundation.h>

#import "BDPSDRegistryRepository.h"
#import "BDPSDError.h"

NS_ASSUME_NONNULL_BEGIN

@interface BBASchemeDescriptionManager : NSObject

- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)new NS_UNAVAILABLE;

+ (instancetype)sharedInstance;

/// 注册注册表仓库
/// @param repository 注册表仓库实例
- (int)registerLocalRegistryRepository:(id<BDPSDRegistryRepository>)repository;


/**
*  @abstract         配置描述表修复数据
*  @param descPatchData           描述表补丁
*/
- (void)setDescPatchData:(NSArray *)descPatchData;

/**
*  @abstract         配置描述表注入的域名白名单
*  @param wlist     域名白名单
*/
- (void)setJSNativeDomainWList:(NSArray *)wlist;

/**
 *  @abstract                  根据框架类型获取对应的描述表列表,
 *                             ⚠️会加载文件,合并描述表, 建议业务自己缓存desc不要重复调用
 *  @param frameType           框架类型,由业务定义 ,如 swan_web  (小程序 webview使用)  swan_jsc (小程序 jscore使用)
 *  @param error               错误返回
 *  @result                    对应框架使用的描述表
 */
- (nullable NSArray *)descriptionWithFrameType:(NSString *)frameType error:(NSError * _Nullable __autoreleasing *)error;

/**
 *  @abstract                  根据框架类型获取对应的描述表列表,可以传入多个frameTypes
 *                             ⚠️会加载文件,合并描述表, 建议业务自己缓存desc不要重复调用
 *  @param frameTypes          框架类型,由业务定义 ,
                                如 swan_web  (小程序 webview使用)
                                   swan_jsc (小程序 jscore使用)
                                    basic_web (基础端能力)
                                     
 *  @param error               错误返回
 *  @result            对应框架使用的描述表
*/
- (NSArray *)descriptionWithFrameTypes:(NSArray<NSString *>*)frameTypes error:(NSError * _Nullable __autoreleasing *)error;


/**
 *  @abstract           默认的scheme协议头
 *  @result               scheme协议头
*/
- (NSString *)defaultSchemeHeader;


/**
 *  @abstract            与Boxx前端中间层交互的接口封装  有内存缓存 http://agroup.baidu.com/swandocuments/md/article/1864304
 *  @param frameTypes           框架类型,由业务定义 ,如 swan_web  (小程序 webview使用)  swan_jsc (小程序 jscore使用)
 *  @result              js func str
*/
- (NSString *)getAPIsJSFuncWithFrameTypes:(NSArray<NSString *>*)frameTypes;
@end

NS_ASSUME_NONNULL_END