FinClip为企业提供小程序生态圈技术产品,开发者可在FinClip小程序开发帮助中心找到相关FinClip小程序指引

# 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时的配置项为ConfigUIConfig

  • 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;

效果如下:

© 2022 FinClip with ❤