# SDK 初始化
在使用小程序的API之前,需要先初始化小程序SDK。只有SDK初始化成功之后,才能使用SDK提供的API,否则 API调用都会失败。
# 1. 初始化
初始化SDK的API有两个:
///
/// initialize FinClip SDK.
/// 初始化SDK(推荐使用)
/// [config] is required. sdk配置
/// [uiConfig] is optional. UI配置
Future<Map> initSDK(Config config, {UIConfig? uiConfig})
///
/// initialize FinClip SDK.
/// 初始化SDK(将要废弃)
/// [sdkkey] is required. it can be getted from api.finclip.com
/// [secret] is required. it can be getted from api.finclip.com
/// [apiServer] is optional. the mop server address. default is https://api.finclip.com
/// [apiPrefix] is optional. the mop server prefix. default is /api/v1/mop
/// [cryptType] is optional. cryptType, should be MD5/SM
/// [disablePermission] is optional.
/// [encryptServerData] 是否对服务器数据进行加密,需要服务器支持
/// [userId] 用户id
/// [finStoreConfigs] 多服务配置
/// [uiConfig] UI配置
/// [debug] 设置debug模式,影响调试和日志
/// [customWebViewUserAgent] 设置自定义webview ua
/// [appletIntervalUpdateLimit] 设置小程序批量更新周期
/// [maxRunningApplet] 设置最大同时运行小程序个数
///
Future<Map> initialize(
String sdkkey,
String secret, {
String? apiServer,
String? apiPrefix,
String? cryptType,
bool encryptServerData = false,
bool disablePermission = false,
String? userId,
bool debug = false,
bool bindAppletWithMainProcess = false,
List<FinStoreConfig>? finStoreConfigs,
UIConfig? uiConfig,
String? customWebViewUserAgent,
int? appletIntervalUpdateLimit,
int? maxRunningApplet,
})
初始化示例:
// 1.创建Config
FinStoreConfig storeConfig = new FinStoreConfig('22LyZEib0gLTQdU3MUauATBwgfnTCJjdr7FCnywmAEM=', 'bdfd76cae24d4313', 'https://api.finclip.com');
Config config = new Config([storeConfig]);
config.userId = '您app的用户唯一标识';
// 2.创建UIConfig
UIConfig uiConfig = new UIConfig();
uiConfig.isHideAddToDesktopMenu = true;
uiConfig.isHideFeedbackAndComplaints = true;
final res = await Mop.instance.initSDK(config, uiConfig: uiConfig);
以下是配置多个服务器初始化SDK的示例:
// 1.创建Config
// 1.1 配置服务器1的参数
FinStoreConfig finclip_store = FinStoreConfig('22LyZEib0gLTQdU3MUauATBwgfnTCJjdr7FCnywmAEM=', 'bdfd76cae24d4313', 'https://api.finclip.com');
// 1.2 配置服务器2的参数
FinStoreConfig test_store = FinStoreConfig('sdkKey2', 'sdkSecret2', '测试服务器');
Config config = Config([finclip_store, test_store]);
config.userId = '您app的用户唯一标识';
// 2.创建UIConfig
UIConfig uiConfig = UIConfig();
uiConfig.isHideAddToDesktopMenu = true;
uiConfig.isHideFeedbackAndComplaints = true;
final res = await Mop.instance.initSDK(config, uiConfig: uiConfig);
# FinStoreConfig配置项
配置名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
sdkKey | String | 是 | 创建应用时生成的sdkKey |
sdkSecret | String | 是 | 创建应用时生成的sdkSecret |
apiServer | String | 是 | 服务器地址,客户部署的后台地址 |
apmServer | String | 否 | apm事件上报的服务器地址,不设置时使用apiServer |
cryptType | String | 否 | 网络接口加密类型。默认为"MD5",也可以设置为"SM"(国密) |
fingerprint | String | 否 | SDK指纹,在证联环境时必须传,否则接口访问不通 |
encryptServerData | Boolean | 否 | 默认为false。目前只能设置为false,设置为true会导致接口访问失败 |
enablePreloadFramework | Boolean | 否 | 默认为true。是否预下载基础库,如果设置为false,则初始化SDK时不会预下载基础库 |
# 2. 配置项
初始化SDK时的配置项为Config
和UIConfig
。
Config
中主要是与UI不相关的配置项;UIConfig
主要都是与UI相关的配置项。
# 2.1 Config中的配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
finStoreConfigs | List<FinStoreConfig> | 要初始化的服务器配置对象列表,具体参数见FinStoreConfig 表 |
userId | String | 当前用户唯一标识,小程序缓存信息会以userId做隔离 |
productIdentification | String | 产品的标识,影响缓存根目录,以及userAgent中的标识 |
disableRequestPermissions | Boolean | 是否禁止SDK触发权限申请,默认为false。如果设置为true,则SDK内使用权限的api,不会主动申请权限。 |
appletAutoAuthorize | Boolean | 申请权限时是否会弹出对话框让用户确认,默认为false。如果设置为true,自动向SDK申请权限,不展示弹框 |
disableGetSuperviseInfo | Boolean | 是否禁用SDK的监管接口API,默认为false,如果设置为true,则SDK禁用监管接口API(getSuperviseInfo) |
appletIntervalUpdateLimit | int | 后台自动检查更新的小程序个数,取值范围:0~50。0代表不检查更新;不设置默认是3。 |
apmExtendInfo | Map<String, String> | apm 统计的扩展信息。Map类型 |
startCrashProtection | Boolean | 是否开启Crash防崩溃,默认值为false(仅iOS支持)。UnrecognizedSelector、KVO、Notification、Timer、Container(数组越界,字典插入nil等)、String (越界、nil等) |
enableApmDataCompression | Boolean | apm数据上报时,是否压缩数据,默认值为false |
encryptServerData | Boolean | 平台接口返回的数据是否要加密,默认值为false。 |
appletDebugMode | BOOLState | 是否开启小程序的debug模式,即显示vConsole。 |
enableWatermark | Boolean | 是否显示水印,默认值为false。 |
watermarkPriority | ConfigPriority | 显示水印优先级设置,默认全局配置优先 |
baseLoadingViewClass | String | 小程序的自定义loading视图的class类名,仅iOS支持 |
baseLoadFailedViewClass | String | 小程序的加载失败视图的class类名,仅iOS支持 |
header | Map<String, String> | 统一设置小程序中网络请求的header |
headerPriority | ConfigPriority | header优先级设置,默认全局配置优先 |
enableH5AjaxHook | Boolean | 是否开启小程序中加载的H5页面hook功能,默认为false。仅iOS支持,详情见api中的注释 |
h5AjaxHookRequestKey | String | 开启enableH5AjaxHook后,会hook request请求,可设置requestKey。仅iOS支持 |
pageCountLimit | int | 小程序中页面栈的最大限制。默认值为0,表示不限制。 |
schemes | List<String> | 自定义的scheme数组。 SDK内部默认支持微信、支付宝、 FinClip App 、tel这些scheme |
debug | Boolean | 设置debug模式,影响调试和日志。 |
maxRunningApplet | int | 设置最大同时运行的小程序个数。仅Android支持 |
webViewMixedContentMode | int | WebView mixed content mode。仅Android支持 |
bindAppletWithMainProcess | Boolean | 小程序进程是否与主进程绑定,默认值为false。设置为true时,App被杀死,小程序同步关闭。仅Android支持 |
killAppletProcessNotice | String | App被杀后关闭小程序的提示文案。仅Android支持 |
enableScreenShot | Boolean | 是否允许截屏录屏,默认为true。仅Android支持 |
screenShotPriority | ConfigPriority | 截屏录屏配置项的优先级,默认GLOBAL。仅Android支持 |
logLevel | LogLevel | 日志记录等级,默认为NONE。 |
logMaxAliveSec | int | 日志文件最长缓存时间,单位秒,默认为10天。 |
logDir | String | Log日志文件保存的目录。 |
enablePreNewProcess | Boolean | 是否提前创建进程,默认为true。仅Android支持 |
language | LanguageType | SDK公共UI的语言类型,默认为中文 |
customLanguagePath | String | SDK公共UI自定义语言的相对路径,优先级高于 language 属性(仅 iOS 平台生效) |
localeLanguage | String | 自定义SDK的语言,优先级高于内置的 language 属性(仅 android 平台生效),语言列表可以参考:https://uutool.cn/info-i18n/ 或者Java类 【java.util.Locale】。示例:简体中文:zh_CN,繁体中文:zh_TW,英文:en |
useLocalTbsCore | Boolean | 是否使用本地加载tbs内核,默认为false。仅Android支持 |
tbsCoreUrl | String | tbs内核的下载地址,不包含文件名。仅Android支持 |
enableJ2V8 | Boolean | 是否开启j2v8,默认为false。仅Android支持 |
backgroundFetchPeriod | int | 周期性更新的时间间隔(小时), 设置为0不会发起周期性更新请求,接收设置范围为3-12小时 |
# 2.2 UIConfig中的配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
navigationTitleTextAttributes | Map<String, dynamic> | 导航栏标题的样式,目前仅支持字体的配置。仅iOS支持 |
navigationBarHeight | double | 导航栏高度,默认为44。仅iOS支持 |
navigationBarTitleLightColor | int | 导航栏的标题Light颜色(系统深色主题下的颜色),默认值为白色 0xffffffff |
navigationBarTitleDarkColor | int | 导航栏的标题Dark颜色(系统明亮主题下的颜色),默认值为黑色 0xff000000 |
navigationBarBackBtnLightColor | int | 导航栏的返回按钮Light颜色(系统深色主题下的颜色),默认值为白色 |
navigationBarBackBtnDarkColor | int | 导航栏的返回按钮Dark颜色(系统明亮主题下的颜色),默认值为黑色 |
moreMenuStyle | int | 弹出的菜单视图的样式 0:默认 1:Normal |
isHideBackHomePriority | ConfigPriority | 隐藏导航栏返回首页按钮的优先级设置,默认全局配置优先。仅iOS支持 |
isAlwaysShowBackInDefaultNavigationBar | Boolean | 当导航栏为默认导航栏时,是否始终显示返回按钮,默认值为false。仅Android支持 |
isClearNavigationBarNavButtonBackground | Boolean | 是否清除导航栏导航按钮的背景,默认为false。仅Android支持 |
isHideFeedbackAndComplaints | Boolean | 隐藏...弹出菜单中的 【反馈与投诉】 菜单,默认为false |
isHideBackHome | Boolean | 隐藏...弹出菜单中的 【返回首页】 菜单。默认为false |
isHideForwardMenu | Boolean | 隐藏...弹出菜单中的 【转发】 菜单,默认为false |
isHideShareAppletMenu | Boolean | 隐藏...弹出菜单中的 【分享】 菜单,默认为true |
isHideAddToDesktopMenu | Boolean | 隐藏...弹出菜单中的 【添加到桌面】 菜单,默认为true |
isHideFavoriteMenu | Boolean | 隐藏...弹出菜单中的 【收藏】 菜单,默认为true |
isHideRefreshMenu | Boolean | 隐藏...弹出菜单中的 【重新进入小程序】 菜单,默认为false |
isHideSettingMenu | Boolean | 隐藏...弹出菜单中的 【设置】 菜单,默认为false |
capsuleConfig | CapsuleConfig | 右上角胶囊的样式配置,具体参数见CapsuleConfig 表 |
navHomeConfig | NavHomeConfig | 返回首页按钮的配置的样式配置,具体参数见NavHomeConfig 表 |
floatWindowConfig | FloatWindowConfig | 安卓浮窗样式配置,具体参数见FloatWindowConfig 表。仅Android支持 |
authViewConfig | AuthViewConfig | 授权弹框样式配置,具体参数见AuthViewConfig 表。 |
webViewProgressBarColor | int | 小程序里加载H5页面时进度条的颜色 |
hideWebViewProgressBar | Boolean | 隐藏小程序里加载H5时进度条,默认为false |
autoAdaptDarkMode | Boolean | 是否适配暗黑模式,默认值为false |
| appendingCustomUserAgent | String | 要拼接至userAgent中的内容。| | transtionStyle | TranstionStyle | 打开小程序时的默认动画方式。默认为TranstionStyleUp。可设置如下场景:1. scheme 打开小程序;2. universal link 打开小程序;3. navigateToMiniprogram的动画方式。仅iOS支持| | hideTransitionCloseButton | Boolean | 是否小程序loading页的关闭按钮,默认为false。| | disableSlideCloseAppletGesture | Boolean | 是否禁用侧滑关闭小程序的手势,默认为false。| | appletText | String | 默认为“小程序”,您需要替换展示的名称。比如设置为"轻应用",所有显示"小程序"的地方,都会变为"轻应用"| | loadingLayoutCls | String | Loading页Class,仅Android支持 | | useNativeLiveComponent | Boolean | 是否使用内置的live组件,默认为false。|
# 2.3 CapsuleConfig(胶囊)中的配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
capsuleWidth | double | 胶囊的宽度 |
capsuleHeight | double | 胶囊的高度 |
capsuleRightMargin | double | 胶囊的右边框距离屏幕右边框的距离 |
capsuleCornerRadius | double | 胶囊的圆角半径 |
capsuleBorderWidth | double | 胶囊的边框宽度 |
capsuleBgLightColor | int | 胶囊的浅色背景颜色,在系统深色主题下使用,默认颜色 android:0x33000000 ,iOS:0x80ffffff |
capsuleBgDarkColor | int | 胶囊的深色背景颜色,在系统明亮主题下使用,默认颜色 android:0x80ffffff ,iOS:0x33000000 |
capsuleBorderLightColor | int | 胶囊的浅色边框颜色,在系统深色主题下使用,默认颜色 0x80ffffff |
capsuleBorderDarkColor | int | 胶囊的深色边框颜色,在系统深色主题下使用,默认颜色 0x26000000 |
capsuleDividerLightColor | int | 胶囊里浅色分割线颜色,在系统深色主题下使用,默认颜色 0x80ffffff |
capsuleDividerDarkColor | int | 胶囊里的深色分割线颜色,在系统深色主题下使用,默认颜色 0x26000000 |
moreLightImage | int | 胶囊的浅色更多按钮图片,暂未支持 |
moreDarkImage | int | 胶囊的深色更多按钮图片,暂未支持 |
moreBtnWidth | double | 胶囊的更多按钮宽度,高度与宽度相等,android默认值为32;ios默认值为20 |
moreBtnLeftMargin | double | 更多按钮的左边距,android默认值为6;ios默认值为12 |
closeLightImage | int | 胶囊里的深色关闭按钮图片,暂未支持 |
closeDarkImage | int | 胶囊里的深色关闭按钮图片,暂未支持 |
closeBtnWidth | double | 胶囊里关闭按钮的宽度,android默认值为32;ios默认值为20 |
closeBtnLeftMargin | double | 胶囊里关闭按钮的左边距,android默认值为6;ios默认值为12 |
# 2.4 NavHomeConfig(返回首页按钮)中的配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
width | double | 返回首页按钮的宽度 |
height | double | 返回首页按钮的高度 |
leftMargin | double | 返回首页按钮的左侧距离屏幕左边框的距离,Android默认值为8,iOS默认值为10 |
cornerRadius | double | 返回首页按钮的圆角半径,默认值为5 |
borderWidth | borderWidth | 返回首页按钮的边框宽度,Android默认值为0.75,iOS默认值为0.8 |
borderLightColor | int | 返回首页按钮的浅色边框颜色,默认值 0x80ffffff |
borderDarkColor | int | 返回首页按钮的深色边框颜色,默认值 0x26000000 |
bgLightColor | int | 返回首页按钮的浅色背景颜色,默认值 0x33000000 |
bgDarkColor | int | 返回首页按钮的深色背景颜色,默认值 0x80ffffff |
# 2.5 AuthViewConfig(权限弹框)的配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
appletNameTextSize | double | 小程序名称字体大小,默认为16 |
appletNameLightColor | int | 小程序名称的浅色颜色(明亮模式),默认0xff222222 |
appletNameDarkColor | int | 小程序名称的深色颜色(暗黑模式),默认0xffd0d0d0 |
authorizeTitleTextSize | double | 权限标题字体大小,默认大小17 |
authorizeTitleLightColor | int | 权限标题的浅色颜色(明亮模式),默认0xff222222 |
authorizeTitleDarkColor | int | 权限标题的深色颜色(暗黑模式),默认0xffd0d0d0 |
authorizeDescriptionTextSize | double | 权限描述字体大小,默认大小14 |
authorizeDescriptionLightColor | int | 权限描述的浅色颜色(明亮模式),默认0xff666666 |
authorizeDescriptionDarkColor | int | 权限描述的深色颜色(暗黑模式),默认0xff5c5c5c |
agreementTitleTextSize | double | 协议标题字体大小,默认大小16 |
agreementTitleLightColor | int | 协议标题的浅色颜色(明亮模式),默认0xff222222 |
agreementTitleDarkColor | int | 协议标题的深色颜色(暗黑模式),默认0xffd0d0d0 |
agreementDescriptionTextSize | double | 协议描述字体大小,默认大小14 |
agreementDescriptionLightColor | int | 协议描述的浅色颜色(明亮模式),默认0xff222222 |
agreementDescriptionDarkColor | int | 协议描述的深色颜色(暗黑模式),默认0xffd0d0d0 |
linkLightColor | int | 链接的浅色颜色(明亮模式),默认0xff4285f4 |
linkDarkColor | int | 链接的深色颜色(暗黑模式),默认0xff4285f4 |
allowButtonLightConfig | AuthButtonConfig | 同意按钮配置(明亮模式),详细配置见AuthButtonConfig |
allowButtonDarkConfig | AuthButtonConfig | 同意按钮配置(深色模式),详细配置见AuthButtonConfig |
rejectButtonLightConfig | AuthButtonConfig | 拒绝按钮配置(明亮模式),详细配置见AuthButtonConfig |
rejectButtonDarkConfig | AuthButtonConfig | 拒绝按钮配置(深色模式),详细配置见AuthButtonConfig |
# 2.6 AuthButtonConfig(权限弹框里的按钮)的配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
cornerRadius | double | 按钮的圆角半径 |
normalBackgroundColor | int | 按钮默认背景颜色 |
pressedBackgroundColor | int | 按钮按下背景颜色 |
normalTextColor | int | 按钮默认文字颜色 |
pressedTextColor | int | 按钮按下文字颜色 |
normalBorderColor | int | 按钮默认边框颜色 |
pressedBorderColor | int | 按钮按下边框颜色 |
我们的默认胶囊是这样:
那么,我们只需要这样设置,就可以变成圆角:
UIConfig uiconfig = UIConfig();
CapsuleConfig capsuleConfig = CapsuleConfig();
capsuleConfig.capsuleCornerRadius = 16;
uiconfig.capsuleConfig = capsuleConfig;
效果如下: