# SDK 初始化

在使用小程序的API之前,需要先初始化小程序SDK。只有SDK初始化成功之后,才能使用SDK提供的API,否则 API调用都会失败。

# 1. 初始化

初始化SDK的API有两个:

/// 初始化SDK
/// @param config 配置对象
/// @param error 初始化失败时返回的error
- (BOOL)initWithConfig:(FATConfig *)config error:(NSError **)error;

/// 初始化SDK
/// @param config 配置对象
/// @param uiConfig UI配置对象
/// @param error 初始化失败时返回的error
- (BOOL)initWithConfig:(FATConfig *)config uiConfig:(FATUIConfig *)uiConfig error:(NSError **)error;

初始化示例:

FATStoreConfig *storeConfig = [[FATStoreConfig alloc] init];
storeConfig.sdkKey = @"这里填上的SDK Key";
storeConfig.sdkSecret = @"这里填上SDK secret";
storeConfig.apiServer = @"这里填上你们的服务器地址"; // 例如:https://api.finclip.com;
FATConfig *config = [FATConfig configWithStoreConfigs:@[storeConfig]];
    
[[FATClient sharedClient] initWithConfig:config error:nil];

注意

  1. 从2.13.109版本开始,“人民网+”小程序 SDK 支持配置多个服务器信息,这样就可以打开A服务器上的小程序,又可以打开B服务器上的小程序,所以我们提供了配置多个服务器信息的方式。
  2. configWithAppSecret:appKey:未来会弃用,请尽早替换为configWithStoreConfigs的方式构造FATConfig。
  3. 自2.34.1开始,不再需要配置apiPrefix,内部已经在接口上配置好了apiPrefix。

以下是配置多个服务器初始化SDK的示例:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"servers" ofType:@"plist"];
NSArray *array = [NSArray arrayWithContentsOfFile:plistPath];
NSMutableArray *storeArrayM = [NSMutableArray array];
for (NSDictionary *dict in array) {
    FATStoreConfig *storeConfig = [[FATStoreConfig alloc] init];
    storeConfig.sdkKey = dict[@"sdkKey"];
    storeConfig.sdkSecret = dict[@"sdkSecret"];
    storeConfig.apiServer = dict[@"apiServer"];
    storeConfig.apmServer = dict[@"apmServer"];
    if ([@"SM" isEqualToString:dict[@"cryptType"]]) {
        storeConfig.cryptType = FATApiCryptTypeSM;
    } else {
        storeConfig.cryptType = FATApiCryptTypeMD5;
    }
    
    [storeArrayM addObject:storeConfig];
}
FATConfig *config = [FATConfig configWithStoreConfigs:storeArrayM];
[[FATClient sharedClient] initWithConfig:config error:nil];

# 2. 配置项

初始化SDK时的配置项分FATConfigFATUIConfigFATConfig中主要是与UI不想管的配置项;而FATUIConfig主要都是与UI相关的配置项。

# 2.1 FATConfig中的配置项

配置名称 配置描述
currentUserId 当前用户唯一标识,小程序缓存信息会存储在以userId命名的不同目录下
disableAuthorize 是否禁止SDK触发权限申请,默认为NO,如果设置为YES,则SDK内使用权限的api,不会主动申请权限。
appletAutoAuthorize 是否自动向SDK申请权限,默认为NO,申请权限时会弹出对话框让用户确认是否允许申请,如果设置为YES,自动向SDK申请权限
disableGetSuperviseInfo 是否禁用SDK的监管接口API,默认为NO,如果设置为YES,则SDK禁用监管接口API(getSuperviseInfo)
appletIntervalUpdateLimit 后台自动检查更新的小程序个数,取值范围:0~50。0代表不检查更新;不设置默认是3。
startCrashProtection 是否开启Crash防崩溃。UnrecognizedSelector、KVO、Notification、Timer、Container(数组越界,字典插入nil等)、String (越界、nil等)
enableApmDataCompression apm数据上报时,是否压缩数据
encryptServerData 平台接口返回的数据是否要加密
enableAppletDebug 是否开启全局debug模式,设置为YES后所有小程序都会显示vconsole,如果设置为NO,则开发版、体验版、IDE预览版可通过 更多菜单开启Debug模式
enableH5AjaxHook 是否开启小程序中加载的H5页面hook功能,非必填。详情见api中的注释
h5AjaxHookRequestKey 开启enableH5AjaxHook后,会hook request请求,可设置requestKey
pageCountLimit 小程序中页面栈的最大限制。默认值为0,表示不限制。
schemes 自定义的scheme数组。 SDK内部默认支持微信、支付宝、 “人民网+”小程序 App 、tel这些scheme
language SDK的语言类型。 目前仅支持中文和英文,默认情况下为中文,不支持的类型也会显示为中文

# 2.2 FATUIConfig中的配置项

配置名称 配置描述
navigationTitleTextAttributes 导航栏标题的样式,目前仅支持字体的配置。
capsuleConfig 右上角胶囊的样式配置,具体参数见FATCapsuleConfig
navHomeConfig 返回首页按钮的配置的样式配置,具体参数见FATNavHomeConfig
navigationBackImage 导航栏返回按钮的图片对象
progressBarColor 小程序中的 WebView 组件加载链接时的进度条颜色
moreMenuStyle 胶囊里更多按钮弹出的菜单视图的样式
hideForwardMenu 是否隐藏更多菜单中的转发按钮。
hideSettingMenu 是否隐藏小程序更多菜单中的设置按钮。
hideShareAppletMenu 是否隐藏小程序更多菜单中的分享按钮,默认是YES。
hideFeedbackMenu 是否隐藏更多菜单中的投诉反馈按钮。
hideRefreshMenu 是否隐藏更多菜单中的重新进入按钮。
hideBackToHome 是否隐藏导航栏中回到首页按钮。
hideDebugMenu 是否隐藏导航栏中打开/关闭调试按钮。
autoAdaptDarkMode 是否适配暗黑模式。
appendingCustomUserAgent 您需要添加至userAgent中的内容。
appletText 默认为“小程序”,您需要替换展示的名称。比如设置会"轻应用",所有显示"小程序"的地方,都会变为"轻应用"
transtionStyle 打开小程序时的默认动画方式。不设置时,默认为FATTranstionStyleUp。可设置如下场景:1. scheme 打开小程序;2. universal link 打开小程序;3. navigateToMiniprogram的动画方式
hideTransitionCloseButton 是否隐藏转场页的关闭按钮。默认为NO
disableSlideCloseAppletGesture 是否禁用侧滑关闭小程序的手势。默认为NO

# 2.3 FATCapsuleConfig(胶囊)中的配置项

配置名称 配置描述
capsuleWidth 胶囊的宽度
capsuleHeight 胶囊的高度
capsuleRightMargin 胶囊的右边框距离屏幕右边框的距离
capsuleCornerRadius 胶囊的圆角半径
capsuleBorderWidth 胶囊的边框宽度
capsuleBorderLightColor 胶囊的浅色边框颜色
capsuleBorderDarkColor 胶囊的深色边框颜色
capsuleBgLightColor 胶囊的浅色下背景颜色
capsuleBgDarkColor 胶囊的深色下背景颜色
moreLightImage 胶囊的浅色更多按钮图片
moreDarkImage 胶囊的深色更多按钮图片
moreBtnWidth 胶囊的更多按钮宽度
moreBtnLeftMargin 更多按钮的左边距
closeLightImage 胶囊里的深色关闭按钮图片
closeDarkImage 胶囊里的深色关闭按钮图片
closeBtnWidth 胶囊里关闭按钮的宽度
closeBtnLeftMargin 胶囊里关闭按钮的左边距
capsuleDividerLightColor 胶囊里浅色分割线颜色
capsuleDividerDarkColor 胶囊里的深色分割线颜色

# 2.4 FATNavHomeConfig(返回首页按钮)中的配置项

配置名称 配置描述
width 返回首页按钮的宽度
height 返回首页按钮的高度
leftMargin 返回首页按钮的左侧距离屏幕左边框的距离
cornerRadius 返回首页按钮的圆角半径
borderWidth 返回首页按钮的边框宽度
lightImage 返回首页按钮的浅色按钮图片
darkImage 返回首页按钮的深色按钮图片
borderLightColor 返回首页按钮的浅色边框颜色
borderDarkColor 返回首页按钮的深色边框颜色
bgLightColor 返回首页按钮的浅色背景颜色
bgDarkColor 返回首页按钮的深色背景颜色

我们的默认胶囊是这样:

那么,我们只需要这样设置,就可以变成圆角:

FATUIConfig *uiConfig = [[FATUIConfig alloc] init];
uiConfig.capsuleConfig.capsuleCornerRadius = 15.5;

效果如下: