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

# 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?>?)

# 调用示例

注意

  1. 2.13.102版本开始,FinClip 小程序 SDK 支持配置多个服务器信息,可以同时打开多个不同服务器上的小程序,所以我们提供了配置多个服务器信息的方式。
  2. Builder().setSdkKeyBuilder().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示例代码

          配置名称 类型 配置描述
          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示例代码:

            注意

            目前返回首页按钮出现的条件为(需同时满足):

            1. 使用了默认导航栏样式(非 custom)。
            2. 不是首页或 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使用示例:

                © FinClip with ❤ , Since 2017