# SDK 初始化
注意
小程序、小游戏、H5应用都是用的是同一个SDK,所以初始化SDK的逻辑都是一样的。
在使用小程序的API之前,需要先初始化小程序SDK。只有成功初始化之后,才能使用SDK提供的API,否则API调用会失败。
# 1. 初始化
# API
/**
* 初始化小程序SDK
*
* @param application [android.app.Application]实例
* @param finAppConfig [FinAppConfig]实例,小程序框架的配置信息
* @param finCallback 初始化状态回调接口
*/
fun init(application: Application, finAppConfig: FinAppConfig, finCallback: FinCallback<Any?>?)
# 调用示例
注意
- 从
2.13.102
版本开始,FinClip 小程序 SDK 支持配置多个服务器信息,可以同时打开多个不同服务器上的小程序,所以我们提供了配置多个服务器信息的方式。 - 以
Builder().setSdkKey
和Builder().setSdkSecret
方式初始化单服务器的方法未来可能会禁用,请优先使用多服务器初始化的方式。
# 2. 配置项
# FinAppConfig配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
finStoreConfigs | List<FinStoreConfig> | 小程序服务器配置信息集合 |
userId | String | 当前用户唯一标识,小程序缓存信息会存储在以userId命名的不同目录下,如需在后续逻辑中修改userId,则可以直接使用FinAppClient.INSTANCE.getFinAppConfig().setUserId("newUserId") |
memberUserId | String | 成员标识,用于打开体验版、开发版。如果未设置会取userId,需要跟管理平台体验、开发成员列表的用户标识匹配 |
channel | NSString | 渠道标识,如果不填,默认为项目的 AppliationId,小程序插件中实现getPhoneNumber和login会用到。 |
phone | NSString | 手机号,也可以是一个Token,非必传,小程序插件中实现getPhoneNumber会用到。 |
encryptUserId | boolean | (后台接口)是否对userId进行加密传输,需要确保后台服务升级至1.4.1以上,否则加密会导致接口请求失败,默认为false |
productIdentification | String | 产品的标识,配置会将文件夹、UserAgent里的FinClip 等标识改为配置后的值 |
isDebugMode | boolean | 应用当前是否是Debug模式。 |
isEnableLog | boolean | 是否开启日志 |
isEnableXLogConsole | boolean | 是否开启XLog的控制台日志,若为false,则仅持久化日志,不在控制台显示 |
apmExtendInfo | Map<String, Object> | apm统计的扩展信息。 |
disableRequestPermissions | boolean | 是否禁止SDK触发权限申请,默认为false,如果设置为true,则SDK内使用权限的api,不会主动申请权限。 |
needToRemoveCookiesDomains | List<String> | 初始化SDK时需要移除cookies的域名列表 |
disableTbs | boolean | 是否禁用tbs sdk |
customWebViewUserAgent | String | 需要添加至UserAgent中的内容 |
webViewMixedContentMode | int | WebView 加载混合内容的模式,可选项: -1,不设置 WebView 加载混合内容的模式。 0,设置 WebView 允许加载混合内容。 1,设置 WebView 不允许加载混合内容。 2,设置 WebView 允许加载部分混合内容。一部分不安全的内容可能被允许由安全来源加载,另一部分不安全的内容则会被阻止。允许或阻止的内容类型随 WebView 版本变化而变化,没有明确定义。适用于无法控制 WebView 内容但希望能在安全的环境中运行应用程序的场景。 为了获得最高的安全性,建议设置为不允许加载混合内容。 |
appletIntervalUpdateLimit | int | 后台自动检查更新的小程序个数,取值范围:0~50。0代表不检查更新;不设置默认是3。 |
maxRunningApplet | int | 可同时运行的小程序个数 ,默认为5 |
foregroundServiceConfig | ForegroundServiceConfig | 是否在小程序运行时开启宿主app的前台服务,开启后可防止app进程被系统杀死 |
bindAppletWithMainProcess | boolean | 小程序进程是否与app主进程绑定,如果设置为true,则主进程被杀死时,小程序进程同步关闭(备注:部分机型在任务列表里面清理掉主进程,并不能真实杀掉主进程,所以无法同时清理掉小程序进程。) |
killAppletProcessNotice | String | app主进程被杀后关闭小程序的提示文案 |
appletText | String | 小程序文案,默认为“小程序”,你可以设置为"快应用","轻应用" |
enableApmDataCompression | boolean | apm数据上报时,是否压缩数据 |
disableGetSuperviseInfo | boolean | 是否禁用SDK的监管接口API,默认为false,如果设置为true,则SDK禁用监管接口API(getSuperviseInfo) |
appletAutoAuthorize | boolean | 是否允许SDK自动授予小程序权限。默认为false.如果设置为true,则小程序里首次触发权限时不会展示权限弹框 |
appletDebugMode | AppletDebugMode | 是否开启小程序的vconsole调试 |
pageCountLimit | int | 小程序中页面栈个数的最大限制。默认值为0,表示不限制。 |
minAndroidSdkVersion | int | 最低支持的Android SDK版本 |
appletConfigFactory | IAppletConfigFactory | 单个小程序配置的实现类 |
enableScreenShot | boolean | 是否允许截屏、录屏,默认为true |
screenShotPriority | FinAppConfigPriority | 截屏录屏配置项的优先级,默认GLOBAL |
enableWatermark | boolean | 是否开启水印,默认为false |
watermarkPriority | FinAppConfigPriority | 屏水印配置项的优先级,默认GLOBAL |
watermarkFactoryClass | String | 水印View的类名 |
header | Map<String, String> | 小程序中网络(request/uploadFile/downloadFile)请求的header |
headerPriority | FinAppConfigPriority | header配置优先级,默认GLOBAL |
offlinePackageFactoryClass | String | 离线小程序分包package文件获取类的类名 |
navigateDelegate | NavigateDelegate | 离线小程序打开其他小程序的代理 |
logLevel | XLogLevel | 要记录的日志的等级 |
logMaxAliveSec | long | 日志文件最长缓存时间,单位秒。最小不能小于1天,即不能小于 1 * 24 * 60 * 60 秒 |
xLogDir | String | 自定义日志文件的存放路径 |
offlineAccountInfoClass(废弃) | String | 离线小程序AccountInfo实现类的类名 |
schemes | String[] | 自定义的scheme数组。 SDK内部默认支持微信、支付宝、 FinClip App 、tel这些scheme |
enablePreNewProcess | boolean | 是否提前创建进程,默认为true |
logDelegate | String | 接收XLog日志输出的代理类的类名 |
performanceRecordDelegate | String | 接收性能日志输出的代理类的类名 |
shareAppletHandlerClass | String | 更多菜单里的分享按钮事件代理类的类名 |
appJsonHandlerClass | String | 接收小程序app.json的代理类的类名 |
locale | Locale | sdk 公共UI的语言类型,目前仅支持中文和英文,默认为简体中文 |
logDelegate | String | 接收XLog日志输出的代理类的类名 |
authRequestHandlerClass | String | scope请求或系统权限申请的前置处理代理类的类名 |
authResultHandlerClass | String | scope请求或系统权限申请的申请结果回调代理类的类名 |
scopeSettingHandlerClass | scope设置页的代理类的类名 | |
authInfoHandlerClass | String | 获取隐私协议详情弹框标题和文案的代理类的类名 |
enableWebViewDownloadFile | boolean | 是否允许 web-view 组件下载文件,默认为 true |
backgroundFetchPeriod | int | 周期性更新的时间间隔(小时), 设置为0不会发起周期性更新以及数据预拉取请求,接收设置范围为3-12小时 |
enableHoleRender | boolean | 开启webView打洞同层渲染,仅仅支持组件(live-player、live-pusher)优先级高于X5同层渲染(注意事项参看初始化集成 (opens new window) 第3.6) |
privacyHandlerClass | String | 获取隐私协议信息的代理类的类名 |
authDescStrategy | int | 小程序权限说明配置策略(AUTH_DESC_STRATEGY_NONE:默认方式,小程序有配置权限说明则显示配置的,没配置则不显示 ; AUTH_DESC_STRATEGY_SHOW_DEFAULT:小程序有配置权限说明则显示配置的,没配置显示内置的权限信息 ; AUTH_DESC_STRATEGY_FORBIDDEN:小程序没有配置权限说明,不允许申请权限) |
FinAppConfig配置示例:
注意
setProductIdentification:在2.38.1版本后新增,需要注意的是,productIdentification中不能使用空白字符以及特殊字符,当使用了setProductIdentification进行自定义产品标识时,需要自定义paths文件,以ProductIdentification值为happy为例,在res/xml路径下,新增名为fin_applet_custom_provider_paths的xml文件,文件名不能更改。文件内容如下:
<!-- 文件名必须为fin_applet_custom_provider_paths.xml, 用于同名替换 --/>
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="happy_uri" path="happy"/>
</paths>
经过以上设置,一个路径为/internal storeage/packageName/files/happy/hello.jpg的文件,其对应的uri为content://com.finogeeks.finosprite.applet.provider/happy_uri/hello.jpg。
# 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时不会预下载基础库 |
# UIConfig配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
isAlwaysShowBackInDefaultNavigationBar | boolean | 是否始终显示返回按钮 |
navigationBarTitleTextLayoutGravity | int | 导航栏标题相对父控件的Gravity |
navigationBarTitleLightColor | Integer | 导航栏标题文字浅色颜色,用于深色主题 |
navigationBarTitleDarkColor | Integer | 导航栏标题文字深色颜色,用于浅色主题 |
navigationBarBackBtnLightColor | Integer | 导航栏返回按钮的浅色颜色,用于深色主题 |
navigationBarBackBtnDarkColor | Integer | 导航栏返回按钮的深色颜色,用于浅色主题 |
isClearNavigationBarNavButtonBackground | boolean | 是否清除导航栏按钮的背景 |
isHideFeedbackAndComplaints | boolean | 是否隐藏"更多"菜单中的"反馈与投诉"按钮 |
isHideBackHome | boolean | 是否隐藏导航栏上的"返回首页"按钮 |
isHideBackHomePriority | FinAppConfigPriority | 枚举值,导航栏上的"返回首页"按钮配置项的优先级,默认为全局优先 |
isHideForwardMenu | boolean | 是否隐藏"更多"菜单中的"转发"按钮 |
isHideSettingMenu | boolean | 是否隐藏“更多”菜单中的“设置”按钮 |
isHideRefreshMenu | boolean | 是否隐藏“更多”菜单中的“重新进入小程序”按钮 |
isHideShareAppletMenu | boolean | 是否隐藏“更多”菜单中的“分享”按钮,默认为true |
isHideAddToDesktopMenu | boolean | 是否隐藏“更多”菜单中的“添加到桌面”按钮,默认为true |
isHideFavoriteMenu | boolean | 是否隐藏“更多”菜单中的“收藏”按钮,默认为true |
hideDebugMenu | boolean | 是否隐藏更多菜单中的调试按钮 |
forwardMenuImageRes | int | "更多"菜单中"转发"按钮icon |
forwadMenuTitle | String | "更多"菜单中"转发"按钮标题 |
hideTransitionCloseButton | boolean | 是否隐藏小程序loading页的关闭按钮 |
disableSlideCloseAppletGesture | boolean | 是否禁用侧滑关闭小程序手势。 2.43.5版本之后将会废弃,请勿再继续使用。 |
moreMenuStyle | int | 更多菜单的样式,可选项: MORE_MENU_DEFAULT,默认样式。 MORE_MENU_NORMAL,普通样式。 MORE_MENU_PAGE,分页样式。 |
capsuleConfig | CapsuleConfig | 胶囊的配置,具体见CapsuleConfig |
floatWindowConfig | FloatWindowConfig | 浮窗模式下浮窗的配置,具体见FloatWindowConfig |
loadingLayoutCls | String | 自定义loading视图时,Loading视图的Class |
autoAdaptDarkMode | boolean | 是否自适应系统深色模式(2.44.5版本废弃,使用新的themeStyle属性) |
themeStyle | int | (2.44.5版本开始支持)指定小程序主题模式(跟随系统-THEME_STYLE_AUTO、暗黑-THEME_STYLE_DARK、浅色-THEME_STYLE_LIGHT)默认值:THEME_STYLE_LIGHT |
hideWebViewProgressBar | boolean | 是否隐藏web-view组件加载H5链接时的进度条 |
webViewProgressBarColor | int | web-view组件加载H5链接时的进度条的颜色 |
navHomeConfig | NavHomeConfig | 导航栏返回首页按钮的配置,具体见NavHomeConfig |
navigateBarBackImageRes | int | 导航栏返回按钮icon资源 |
hideCapsuleCloseButton | boolean | 是否隐藏所有小程序右上角胶囊里的关闭按钮 |
authViewConfig | AuthViewConfig | 授权弹框配置,具体见AuthViewConfig |
commonUISupportOrientation | int | 公共UI页面(比如关于、设置等)的方向 |
moreMenuLogoConfig | ImageViewConfig | 更多按钮界面的Logo相关配置,具体见ImageViewConfig |
hideClearCacheMenu | boolean | 是否隐藏“更多”菜单中的“清理缓存”按钮 |
UIConfig示例代码:
# CapsuleConfig配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
capsuleWidth | float | 右上角胶囊视图的宽度,默认值为88 |
capsuleHeight | float | 右上角胶囊视图的高度,默认值为32 |
capsuleRightMargin | float | 右上角胶囊视图的右边距 |
capsuleCornerRadius | float | 右上角胶囊视图的圆角半径,默认值为5 |
capsuleBorderWidth | float | 右上角胶囊视图的边框宽度,默认值为0.75 |
capsuleBgLightColor | int | 胶囊背景颜色浅色,默认为0x33000000 |
capsuleBgDarkColor | int | 胶囊背景颜色浅色,默认为0x80ffffff |
capsuleBorderLightColor | int | 右上角胶囊视图的边框浅色颜色,默认为0x80ffffff |
capsuleBorderDarkColor | int | 右上角胶囊视图的边框深色颜色,默认为0x26000000 |
moreLightImage | int | 胶囊里更多按钮的浅色图片,不传会使用默认图标 |
moreDarkImage | int | 胶囊里更多按钮的深色图片,不传会使用默认图标 |
moreBtnWidth | float | 胶囊里的更多按钮的宽度,高度与宽度相等,默认为32 |
moreBtnLeftMargin | float | 胶囊里的更多按钮的左边距,默认为6 |
closeLightImage | int | 胶囊里更多按钮的浅色图片,不传会使用默认图标 |
closeDarkImage | int | 胶囊里更多按钮的深色图片,不传会使用默认图标 |
closeBtnWidth | float | 胶囊里的关闭按钮的宽度,注意:高度与宽度相同,默认值32 |
closeBtnLeftMargin | float | 胶囊里的关闭按钮的左边距,默认为6 |
CapsuleConfig示例代码
# NavHomeConfig配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
lightImage | int | 导航栏返回首页按钮浅色图标,不传时会使用默认图标 |
darkImage | int | 导航栏返回首页按钮浅色图标,不传时会使用默认图标 |
width | float | 返回首页按钮宽度,默认44 |
height | float | 返回首页按钮高度,默认32 |
leftMargin | float | 返回首页按钮的左边距,默认8 |
cornerRadius | float | 返回首页按钮边框圆角半径,默认5 |
borderWidth | float | 返回首页按钮边框宽度,默认0.75 |
borderLightColor | int | 返回首页按钮浅色边框颜色,默认0X80FFFFFF |
borderDarkColor | int | 返回首页按钮深色边框颜色,默认0X26000000 |
bgLightColor | int | 返回首页按钮浅色背景,默认0x33000000 |
bgDarkColor | int | 返回首页按钮深色背景,默认0x80ffffff |
NavHomeConfig示例代码:
注意
目前返回首页按钮出现的条件为(需同时满足):
- 使用了默认导航栏样式(非 custom)。
- 不是首页或 tabbar 页面(在 app.json 中定义的)。
另外,小程序可调用 hideHomeButton() ,隐藏返回首页按钮。
# AuthViewConfig配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
appletNameTextSize | float | 小程序名称字体大小,默认16 |
appletNameLightColor | int | 小程序名称的浅色颜色,默认#222222 |
appletNameDarkColor | int | 小程序名称的深色颜色,默认#d0d0d0 |
authorizeTitleTextSize | float | 权限标题字体大小,默认17 |
authorizeTitleLightColor | int | 权限标题的浅色颜色,默认#222222 |
authorizeTitleDarkColor | int | 权限标题的深色颜色,默认#d0d0d0 |
authorizeDescriptionTextSize | float | 权限描述字体大小,默认14 |
authorizeDescriptionLightColor | int | 权限描述的深色颜色,默认#5c5c5c |
authorizeSelectedLightImage | int | 协议选项选中时的浅色icon,大小:22x22dp |
authorizeSelectedDarkImage | int | 协议选项选中时的深色icon,大小:22x22dp |
agreementLightImage | int | 隐私协议入口浅色icon,大小:22x22dp |
agreementDarkImage | int | 隐私协议入口深色icon,大小:22x22dp |
agreementTitleTextSize | float | 协议标题字体大小,默认16 |
agreementTitleLightColor | int | 协议标题的浅色颜色,默认#222222 |
agreementTitleDarkColor | int | 协议标题的深色颜色,默认#d0d0d0 |
agreementDescriptionTextSize | float | 协议描述字体大小,默认14 |
agreementDescriptionLightColor | int | 协议描述的浅色颜色,默认#222222 |
agreementDescriptionDarkColor | int | 协议协议描述的深色颜色,默认#d0d0d0 |
linkLightColor | int | 链接的浅色颜色,默认#4285f4 |
linkDarkColor | int | 链接的深色颜色,默认#4285f4 |
allowButtonLightConfig | AuthButtonConfig | 同意按钮浅色配置,具体见AuthButtonConfig |
allowButtonDarkConfig | AuthButtonConfig | 同意按钮深色配置,具体见AuthButtonConfig |
rejectButtonLightConfig | AuthButtonConfig | 同意按钮浅色配置,具体见AuthButtonConfig |
rejectButtonDarkConfig | AuthButtonConfig | 同意按钮深色配置,具体见AuthButtonConfig |
# AuthButtonConfig配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
cornerRadius | float | 按钮的圆角半径 |
normalBackgroundColor | int | 按钮默认背景颜色 |
pressedBackgroundColor | int | 按钮按下背景颜色 |
normalBorderColor | int | 按钮默认边框颜色 |
pressedBorderColor | int | 按钮按下边框颜色 |
normalTextColor | int | 按钮默认文字颜色 |
pressedTextColor | int | 按钮按下文字颜色 |
# FloatWindowConfig配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
floatMode | boolean | 是否开启浮窗模式 |
x | int | 浮窗的原点横坐标位置 |
y | int | 浮窗的原点纵坐标位置 |
width | int | 浮窗的宽度 |
height | int | 浮窗的高度 |
在一些大屏幕设备上,可以配置小程序以浮窗形式运行。以浮窗形式运行时,可配置浮窗位置和大小,此时位于浮窗下层的页面不可交互。
设置悬浮模式后,同时要在sample styles.xml将FinAppletTheme覆盖为FinAppletTranslucentTheme
<!--悬浮模式需要覆盖FinAppletTheme主题为FinAppletTranslucentTheme-->
<style name="FinAppletTheme" parent="@style/FinAppletTranslucentTheme" />
FloatWindowConfig使用示例:
# ImageViewConfig配置项
配置名称 | 类型 | 配置描述 |
---|---|---|
borderCornerRadius | float | 图片边框圆角半径 默认:4.0 |
borderWidth | float | 图片边框宽度 默认:0.5 |
borderColor | int | 图片边框颜色 默认:0xffd8d8d8 |
backgroundColor | int | 图片背景颜色 默认:0xffffffff |
ImageViewConfig使用示例: