# 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);
# 2. 配置项
初始化SDK时的配置项为Config
和UIConfig
。
Config
中主要是与UI不相关的配置项;UIConfig
主要都是与UI相关的配置项。
# 2.1 Config中的配置项
配置名称 | 配置描述 |
---|---|
finStoreConfigs | 要初始化的服务器配置对象列表 |
userId | 当前用户唯一标识,小程序缓存信息会以userId做隔离 |
productIdentification | 产品的标识,影响缓存根目录,以及userAgent中的标识 |
disableRequestPermissions | 是否禁止SDK触发权限申请,默认为false。如果设置为true,则SDK内使用权限的api,不会主动申请权限。 |
appletAutoAuthorize | 申请权限时是否会弹出对话框让用户确认,默认为false。如果设置为true,自动向SDK申请权限,不展示弹框 |
disableGetSuperviseInfo | 是否禁用SDK的监管接口API,默认为false,如果设置为true,则SDK禁用监管接口API(getSuperviseInfo) |
ignoreWebviewCertAuth | 是否忽略webview的证书校验,默认为false。如果设置为true,则忽略校验Https的证书 |
appletIntervalUpdateLimit | 后台自动检查更新的小程序个数,取值范围:0~50。0代表不检查更新;不设置默认是3。 |
apmExtendInfo | apm 统计的扩展信息。Map类型 |
startCrashProtection | 是否开启Crash防崩溃,默认值为false(仅iOS支持)。UnrecognizedSelector、KVO、Notification、Timer、Container(数组越界,字典插入nil等)、String (越界、nil等) |
enableApmDataCompression | apm数据上报时,是否压缩数据,默认值为false |
encryptServerData | 平台接口返回的数据是否要加密,默认值为false。 |
appletDebugMode | 是否开启小程序的debug模式,即显示vConsole。 |
enableWatermark | 是否显示水印,默认值为false。 |
watermarkPriority | 显示水印优先级设置,默认全局配置优先 |
baseLoadingViewClass | 小程序的自定义loading视图的class类名,仅iOS支持 |
baseLoadFailedViewClass | 小程序的加载失败视图的class类名,仅iOS支持 |
header | 统一设置小程序中网络请求的header |
headerPriority | header优先级设置,默认全局配置优先 |
enableH5AjaxHook | 是否开启小程序中加载的H5页面hook功能,默认为false。仅iOS支持,详情见api中的注释 |
h5AjaxHookRequestKey | 开启enableH5AjaxHook后,会hook request请求,可设置requestKey。仅iOS支持 |
pageCountLimit | 小程序中页面栈的最大限制。默认值为0,表示不限制。 |
schemes | 自定义的scheme数组。 SDK内部默认支持微信、支付宝、 FinClip App 、tel这些scheme |
debug | 设置debug模式,影响调试和日志。仅Android支持 |
maxRunningApplet | 设置最大同时运行的小程序个数。仅Android支持 |
webViewMixedContentMode | ebView mixed content mode。仅Android支持 |
bindAppletWithMainProcess | 小程序进程是否与主进程绑定,默认值为false。设置为true时,App被杀死,小程序同步关闭。仅Android支持 |
killAppletProcessNotice | App被杀后关闭小程序的提示文案。仅Android支持 |
enableScreenShot | 是否允许截屏录屏,默认为true。仅Android支持 |
screenShotPriority | 截屏录屏配置项的优先级,默认GLOBAL。仅Android支持 |
logLevel | 日志记录等级,默认为NONE。仅Android支持 |
logMaxAliveSec | 日志文件最长缓存时间,单位秒,默认为10天。仅Android支持 |
logDir | Log日志文件保存的目录。仅Android支持 |
enablePreNewProcess | 是否提前创建进程,默认为true。仅Android支持 |
language | SDK公共UI的语言类型,默认为中文 |
customLanguagePath | SDK公共UI自定义语言的相对路径,优先级高于 language 属性(仅 iOS 平台生效) |
localeLanguage | 自定义SDK的语言,优先级高于内置的 language 属性(仅 android 平台生效),语言列表可以参考:https://uutool.cn/info-i18n/ 或者Java类 【java.util.Locale】。示例:简体中文:zh_CN,繁体中文:zh_TW,英文:en |
useLocalTbsCore | 是否使用本地加载tbs内核,默认为false。仅Android支持 |
tbsCoreUrl | tbs内核的下载地址,不包含文件名。仅Android支持 |
enableJ2V8 | 是否开启j2v8,默认为false。仅Android支持 |
# 2.2 UIConfig中的配置项
配置名称 | 配置描述 |
---|---|
navigationTitleTextAttributes | 导航栏标题的样式,目前仅支持字体的配置。仅iOS支持 |
navigationBarHeight | 导航栏高度,默认为44。仅iOS支持 |
navigationBarTitleLightColor | 导航栏的标题Light颜色(系统深色主题下的颜色),默认值为白色 |
navigationBarTitleDarkColor | 导航栏的标题Dark颜色(系统明亮主题下的颜色),默认值为黑色 |
navigationBarBackBtnLightColor | 导航栏的返回按钮Light颜色(系统深色主题下的颜色),默认值为白色 |
navigationBarBackBtnDarkColor | 导航栏的返回按钮Dark颜色(系统明亮主题下的颜色),默认值为黑色 |
moreMenuStyle | 弹出的菜单视图的样式 0:默认 1:Normal |
isHideBackHomePriority | 隐藏导航栏返回首页按钮的优先级设置,默认全局配置优先。仅iOS支持 |
isAlwaysShowBackInDefaultNavigationBar | 当导航栏为默认导航栏时,是否始终显示返回按钮,默认值为false。仅Android支持 |
isClearNavigationBarNavButtonBackground | 是否清除导航栏导航按钮的背景,默认为false。仅Android支持 |
isHideFeedbackAndComplaints | 隐藏...弹出菜单中的 【反馈与投诉】 菜单,默认为false |
isHideBackHome | 隐藏...弹出菜单中的 【返回首页】 菜单。默认为false |
isHideForwardMenu | 隐藏...弹出菜单中的 【转发】 菜单,默认为false |
isHideShareAppletMenu | 隐藏...弹出菜单中的 【分享】 菜单,默认为true |
isHideAddToDesktopMenu | 隐藏...弹出菜单中的 【添加到桌面】 菜单,默认为true |
isHideFavoriteMenu | 隐藏...弹出菜单中的 【收藏】 菜单,默认为true |
isHideRefreshMenu | 隐藏...弹出菜单中的 【重新进入小程序】 菜单,默认为false |
isHideSettingMenu | 隐藏...弹出菜单中的 【设置】 菜单,默认为false |
capsuleConfig | 右上角胶囊的样式配置,具体参数见CapsuleConfig 表 |
navHomeConfig | 返回首页按钮的配置的样式配置,具体参数见NavHomeConfig 表 |
floatWindowConfig | 安卓浮窗样式配置,具体参数见FloatWindowConfig 表。仅Android支持 |
authViewConfig | 授权弹框样式配置,具体参数见AuthViewConfig 表。 |
webViewProgressBarColor | 小程序里加载H5页面时进度条的颜色 |
hideWebViewProgressBar | 隐藏小程序里加载H5时进度条,默认为false |
autoAdaptDarkMode | 是否适配暗黑模式,默认值为false |
appendingCustomUserAgent | 要拼接至userAgent中的内容。 |
transtionStyle | 打开小程序时的默认动画方式。默认为TranstionStyleUp。可设置如下场景:1. scheme 打开小程序;2. universal link 打开小程序;3. navigateToMiniprogram的动画方式。仅iOS支持 |
hideTransitionCloseButton | 是否小程序loading页的关闭按钮,默认为false。 |
disableSlideCloseAppletGesture | 是否禁用侧滑关闭小程序的手势,默认为false。 |
appletText | 默认为“小程序”,您需要替换展示的名称。比如设置为"轻应用",所有显示"小程序"的地方,都会变为"轻应用" |
loadingLayoutCls | Loading页Class,仅Android支持 |
useNativeLiveComponent | 是否使用内置的live组件,默认为false。 |
# 2.3 CapsuleConfig(胶囊)中的配置项
配置名称 | 配置描述 |
---|---|
capsuleWidth | 胶囊的宽度 |
capsuleHeight | 胶囊的高度 |
capsuleRightMargin | 胶囊的右边框距离屏幕右边框的距离 |
capsuleCornerRadius | 胶囊的圆角半径 |
capsuleBorderWidth | 胶囊的边框宽度 |
capsuleBgLightColor | 胶囊的浅色背景颜色,在系统深色主题下使用 |
capsuleBgDarkColor | 胶囊的深色背景颜色,在系统明亮主题下使用 |
capsuleBorderLightColor | 胶囊的浅色边框颜色,在系统深色主题下使用 |
capsuleBorderDarkColor | 胶囊的深色边框颜色,在系统深色主题下使用 |
capsuleDividerLightColor | 胶囊里浅色分割线颜色,在系统深色主题下使用 |
capsuleDividerDarkColor | 胶囊里的深色分割线颜色,在系统深色主题下使用 |
moreLightImage | 胶囊的浅色更多按钮图片,暂未支持 |
moreDarkImage | 胶囊的深色更多按钮图片,暂未支持 |
moreBtnWidth | 胶囊的更多按钮宽度,高度与宽度相等,默认值为32 |
moreBtnLeftMargin | 更多按钮的左边距,默认为6 |
closeLightImage | 胶囊里的深色关闭按钮图片,暂未支持 |
closeDarkImage | 胶囊里的深色关闭按钮图片,暂未支持 |
closeBtnWidth | 胶囊里关闭按钮的宽度,默认为32 |
closeBtnLeftMargin | 胶囊里关闭按钮的左边距,默认为6 |
# 2.4 NavHomeConfig(返回首页按钮)中的配置项
配置名称 | 配置描述 |
---|---|
width | 返回首页按钮的宽度 |
height | 返回首页按钮的高度 |
leftMargin | 返回首页按钮的左侧距离屏幕左边框的距离,Android默认值为8,iOS默认值为10 |
cornerRadius | 返回首页按钮的圆角半径,默认值为5 |
borderWidth | 返回首页按钮的边框宽度,Android默认值为0.75,iOS默认值为0.8 |
borderLightColor | 返回首页按钮的浅色边框颜色 |
borderDarkColor | 返回首页按钮的深色边框颜色 |
bgLightColor | 返回首页按钮的浅色背景颜色 |
bgDarkColor | 返回首页按钮的深色背景颜色 |
# 2.5 AuthViewConfig(权限弹框)的配置项
配置名称 | 配置描述 |
---|---|
appletNameTextSize | 小程序名称字体大小,默认为16 |
appletNameLightColor | 小程序名称的浅色颜色(明亮模式),默认#222222 |
appletNameDarkColor | 小程序名称的深色颜色(暗黑模式),默认#D0D0D0 |
authorizeTitleTextSize | 权限标题字体大小,默认大小17 |
authorizeTitleLightColor | 权限标题的浅色颜色(明亮模式),默认#222222 |
authorizeTitleDarkColor | 权限标题的深色颜色(暗黑模式),默认#D0D0D0 |
authorizeDescriptionTextSize | 权限描述字体大小,默认大小14 |
authorizeDescriptionLightColor | 权限描述的浅色颜色(明亮模式),默认#666666 |
authorizeDescriptionDarkColor | 权限描述的深色颜色(暗黑模式),默认#5c5c5c |
agreementTitleTextSize | 协议标题字体大小,默认大小16 |
agreementTitleLightColor | 协议标题的浅色颜色(明亮模式),默认#222222 |
agreementTitleDarkColor | 协议标题的深色颜色(暗黑模式),默认#D0D0D0 |
agreementDescriptionTextSize | 协议描述字体大小,默认大小14 |
agreementDescriptionLightColor | 协议描述的浅色颜色(明亮模式),默认#222222 |
agreementDescriptionDarkColor | 协议描述的深色颜色(暗黑模式),默认#D0D0D0 |
linkLightColor | 链接的浅色颜色(明亮模式),默认#4285f4 |
linkDarkColor | 链接的深色颜色(暗黑模式),默认#4285f4 |
allowButtonLightConfig | 同意按钮配置(明亮模式),详细配置见AuthButtonConfig |
allowButtonDarkConfig | 同意按钮配置(深色模式),详细配置见AuthButtonConfig |
rejectButtonLightConfig | 拒绝按钮配置(明亮模式),详细配置见AuthButtonConfig |
rejectButtonDarkConfig | 拒绝按钮配置(深色模式),详细配置见AuthButtonConfig |
# 2.6 AuthButtonConfig(权限弹框里的按钮)的配置项
配置名称 | 配置描述 |
---|---|
cornerRadius | 按钮的圆角半径 |
normalBackgroundColor | 按钮默认背景颜色 |
pressedBackgroundColor | 按钮按下背景颜色 |
normalTextColor | 按钮默认文字颜色 |
pressedTextColor | 按钮按下文字颜色 |
normalBorderColor | 按钮默认边框颜色 |
pressedBorderColor | pressedBorderColor |
我们的默认胶囊是这样:
那么,我们只需要这样设置,就可以变成圆角:
UIConfig uiconfig = UIConfig();
CapsuleConfig capsuleConfig = CapsuleConfig();
capsuleConfig.capsuleCornerRadius = 16;
uiconfig.capsuleConfig = capsuleConfig;
效果如下: