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

# 小程序信息管理

这个模块主要是获取小程序信息的一些Api介绍。

# 1. 搜索小程序

支持的app类型

小程序✅ 小游戏✅ H5应用✅

要搜索小程序,需要两步:

  1. 确保在初始化SDK的时候,配置了该服务器信息;
  2. 调用该搜索接口搜索小程序

# API

/**
 * 搜索小程序
 *
 * @param searchAppletRequest 请求体
 * @param callback 请求结果回调
 */
fun searchApplet(
    searchAppletRequest: SearchAppletRequest,
    callback: FinCallback<SearchAppletResponse>
)

SearchAppletRequest说明:

/**
 * 搜索小程序请求实体类
 *
 * @param apiServer 服务器地址
 * @param text 搜索内容
 */
data class SearchAppletRequest(var apiServer: String,
                               var text: String)

SearchAppletResponse说明:

/**
 * 搜索小程序返回实体类
 *
 * @param list 搜索到的小程序集合
 * @param total 搜索到的小程序数量
 */
data class SearchAppletResponse(
        val list: List<AppletInfo>?,
        val total: Int
)

/**
 * 搜索小程序返回的小程序信息实体类
 *
 * @param appId 小程序id
 * @param appName 小程序名称
 * @param desc 小程序描述信息
 * @param highLights 高亮字体
 * @param logo 小程序logo
 * @param organName 企业名称
 * @param pageUrl 小程序搜索到的页面路径
 * @param showText 展示内容
 */
data class AppletInfo(
        val appId: String?,
        val appName: String?,
        val desc: String?,
        val highLights: List<HighLight>?,
        val logo: String?,
        val organName: String?,
        val pageUrl: String?,
        val showText: String?
)

/**
 * 高亮字体
 *
 * @param key 高亮字体的key
 * @param value 高亮字体的value
 */
data class HighLight(
        val key: String?,
        val value: String?
)

# 调用示例

    # 2. 获取绑定小程序对象信息

    支持的app类型

    小程序✅ 小游戏✅ H5应用✅

    使用该接口可以不同的参数查询该应用绑定的小程序列表。

    fun getBindApplets(
        fetchBindAppletRequest: FetchBindAppletRequest,
        callback: FinCallback<FetchBindAppletResponse>
    )
    
    

    FetchBindAppletRequest

    属性名 类型 描述
    apiServer String 小程序所属服务器,必填
    appClass String 小程序的分类,默认为''
    appStatus AppStatus 小程序状态类型,枚举值。0:所有;1:已上架的;2:未上架的;3:已下架的
    containForbidden Boolean 查询结果是否包含被禁用的小程序,默认为false
    pageNo Int 分页查询的页码,默认为1
    pageSize Int 分页的大小,默认为20

    返回值

    FetchBindAppletResponse

    属性名 类型 描述
    items List<FetchBindAppletInfo> 小程序对象列表
    total Int 获取到的符合条件的小程序总个数

    FetchBindAppletInfo

    属性名 类型 描述
    apiServer String 小程序所属服务器
    miniAppId String 小程序ID
    name String 小程序名称
    logo String 小程序logo
    appClass String 小程序的分类
    displayStatus AppStatus 小程序状态类型,枚举值。0:所有;1:已上架的;2:未上架的;3:已下架的
    isForbidden Boolean 小程序是否被禁用
    desc String 小程序简介
    detailDesc String 小程序详细描述

    示例代码:

    FinAppClient.appletApiManager.getBindApplets(
    FetchBindAppletRequest(BuildConfig.API_URL,"金融"),
    object : FinSimpleCallback<FetchBindAppletResponse>() {
        override fun onSuccess(result: FetchBindAppletResponse) {
            Toast.makeText(application, "getBindApplets onSuccess : $result", Toast.LENGTH_SHORT).show()
        }
    
        override fun onError(code: Int, error: String?) {
            Toast.makeText(application, "getBindApplets onError : $code, $error", Toast.LENGTH_SHORT).show()
        }
    })
    

    # 3. 获取小程序对象信息

    支持的app类型

    小程序✅ 小游戏✅ H5应用✅

    如果在主进程里获取小程序对象信息,可以使用FinAppClient下的appletApiManager中API。

    # 3.1 主进程中获取进程内存中的小程序信息

    /**
     * 从正在运行的小程序进程内存中获取小程序信息
     */
    fun getAppletInfoFromRunning(appId: String): FinAppInfo?
    

    # 调用示例

      # 3.2 主进程中获取磁盘上小程序信息

      /**
       * 从本地磁盘获取小程序信息(仅支持正式版小程序)
       */
      fun getAppletInfo(appId: String): FinAppInfo?
      

      示例代码:

        # 3.3 小程序进程获取小程序信息

        如果是在小程序进程获取小程序信息,则应该使用FinAppProcessClientappletProcessApiManager下的api:

         /**
         * 获取运行中的小程序信息
         */
        fun getAppletInfo(): FinAppInfo?
        

        示例代码:

          # 相关字段说明

          字段名 说明
          appId 小程序id
          codeId 小程序代码包ID
          userId 小程序开发者id
          appAvatar 小程序头像
          appTitle 小程序名称
          appDescription 小程序描述
          appPath 小程序路径
          appVersion 小程序版本号
          appVersionDescription 小程序版本说明
          sequence 小程序序列
          isGrayVersion 是否是灰度版本
          appThumbnail 小程序缩略图
          groupId 所属组织ID
          groupName 所属组织名称
          appType 小程序类型
          createdBy 小程序开发者
          createdTime 小程序创建时间
          startParams 启动参数
          info 扩展信息
          fromAppId 小程序的来源小程序id
          如果小程序A通过调用navigateToMiniProgram打开小程序B,那么对于小程序B来说,fromAppId为小程序A的appId
          finStoreConfig 小程序应用市场配置信息
          frameworkVersion 基础库版本号
          url 小程序下载地址
          md5 小程序整包MD5
          cryptInfo 小程序加密信息

          # 4. 获取小程序当前WebView信息

          支持的app类型

          小程序✅ 小游戏🚫 H5应用🚫

          # 4.1 获取当前webView的URL

          如果当前页面加载的是H5,才会返回H5对应的URL。

          FinAppClient.appletApiManager.getCurrentWebViewURL(
              object : FinCallback<String> {
                  override fun onSuccess(result: String?) {
                      toast("url:$result")
                  }
          
                  override fun onError(code: Int, error: String?) {
          
                  }
          
                  override fun onProgress(status: Int, info: String?) {
          
                  }
              })
          

          # 4.2 获取当前webView的UserAgent

          FinAppClient.appletApiManager.getCurrentWebViewUserAgent(
              object : FinCallback<String> {
                  override fun onSuccess(result: String?) {
                      toast("userAgent:$result")
                  }
          
                  override fun onError(code: Int, error: String?) {
          
                  }
          
                  override fun onProgress(status: Int, info: String?) {
          
                  }
              })
          

          # 5. 获取小程序页面截图

          支持的app类型

          小程序✅ 小游戏🚫 H5应用🚫

          # API

          /**
           * 获取小程序页面截图
           *
           * @param appId 小程序id
           * @param snapShotWholePage 是否截取完整小程序页面(包括可视范围之外)
           * @param callback 小程序页面截图回调
           */
          fun captureAppletPicture(
              appId: String,
              snapShotWholePage: Boolean,
              callback: FinCallback<Bitmap?>
          )
          

          # 调用示例

            # 6. 获取使用过的小程序

            支持的app类型

            小程序✅ 小游戏✅ H5应用✅

            # 6.1 获取使用过的指定小程序

            # API
            /**
             * 获取指定小程序id的使用过的小程序
             *
             * @param appId 小程序id
             */
            fun getUsedApplet(appId: String): FinApplet?
            
            # 调用示例

              # 6.2 获取使用过的小程序列表

              # API
              /**
               * 获取所有使用过的小程序
               */
              fun getUsedApplets(): List<FinApplet>
              
              # 调用示例

                # 6.3 判断是否是使用过的小程序

                # API

                /**
                 * 判断是否是使用过的小程序
                 */
                fun isUsedApplet(appId: String): Boolean
                

                # 调用示例

                  # 7. 获取当前小程序的id

                  支持的app类型

                  小程序✅ 小游戏✅ H5应用✅

                  # API

                  /**
                   * 获取当前小程序的id
                   */
                  fun getCurrentAppletId(): String?
                  

                  # 调用示例

                    # 8. 微信小程序二维码信息转换为 FinClip小程序

                    支持的app类型

                    小程序✅ 小游戏✅ H5应用🚫

                    该API的使用场景是当某小程序在微信和FinClip服务上都上架之后,可以在FinClip平台关联微信的小程序。这时FinClip平台上的线上版二维码,既可以用微信扫码打开,也可以用 FinClip App 或其他集成了FinClip 小程序 SDK的APP扫码打开。

                    流程是先扫描该二维码,得到二维码内容,然后调用该接口获取FinClip 小程序id,最后调用打开小程序的API即可。

                    # API

                    /**
                     * 根据微信QrCode信息解析小程序信息
                     *
                     * @param qrCode 二维码信息
                     * @param apiServer 小程序所在应用市场的服务器地址
                     * @param callback 结果回调
                     */
                    fun parseAppletInfoFromWXQrCode(
                        qrCode: String,
                        apiServer: String,
                        callback: FinSimpleCallback<ParsedAppletInfo?>
                    )
                    

                    ParsedAppletInfo结构如下:

                    /**
                     * 根据微信QrCode信息解析小程序信息返回的小程序信息实体类
                     *
                     * @param appId 小程序id
                     */
                    data class ParsedAppletInfo(
                        val appId: String?
                    )
                    

                    # 调用示例

                      支持的app类型

                      小程序✅ 小游戏🚫 H5应用🚫

                      # API
                      /**
                       * 设置Cookie
                       *
                       * @param context [Context]实例
                       * @param appId 小程序id
                       * @param url 需要设置cookie的url地址
                       * @param cookie cookie信息
                       */
                      fun setCookie(context: Context, appId: String, url: String, cookie: String)
                      
                      # 调用示例
                        # API
                        /**
                         * 移除cookie
                         *
                         * @param context [Context]实例
                         * @param appId 小程序id
                         * @param url 需要设置cookie的url地址
                         */
                        fun removeCookie(context: Context, appId: String, url: String, cookie: String)
                        
                        # 调用示例

                          # 9.3 删除所有Cookie

                          由于Cookie设计的原因,部分低版本WebView启后会同步主进程Cookie,这里为了彻底清空Cookie,会把主进程的Cookie也删除掉

                          # API
                          /**
                           * 移除所有 cookie
                           *
                           * @param context [Context]实例
                           * @param appId 小程序id
                           */
                          fun removeAllCookies(context: Context, appId: String)
                          
                          # 调用示例

                            # 10. 获取收藏的小程序列表

                            支持的app类型

                            小程序✅ 小游戏✅ H5应用✅

                                /**
                                 * 获取收藏的小程序列表
                                 *
                                 * @param favoriteAppletListRequest 请求体
                                 * @param callback 请求结果回调
                                 */
                                fun getFavoriteApplets(
                                    favoriteAppletListRequest: FavoriteAppletListRequest,
                                    callback: FinCallback<FavoriteAppletListResp>
                                )
                            

                            示例代码:

                            val request = FavoriteAppletListRequest("https://api.finclip.com", 1, 5)
                                        FinAppClient.appletApiManager.getFavoriteApplets(request, object: FinSimpleCallback<FavoriteAppletListResp>() {
                                            override fun onSuccess(result: FavoriteAppletListResp) {
                                                Toast.makeText(application, "getFavoriteApplets onSuccess : $result", Toast.LENGTH_SHORT).show()
                                            }
                            
                                            override fun onError(code: Int, error: String?) {
                                                Toast.makeText(application, "getFavoriteApplets onError", Toast.LENGTH_SHORT).show()
                                            }
                                        })
                            
                            © FinClip with ❤ , Since 2017