# 小程序信息管理
这个模块主要是获取小程序信息的一些Api介绍。
# 1. 搜索小程序
支持的app类型
小程序✅ 小游戏✅ H5应用✅
要搜索小程序,需要两步:
- 确保在初始化SDK的时候,配置了该服务器信息;
- 调用该搜索接口搜索小程序
# 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 小程序进程获取小程序信息
如果是在小程序进程获取小程序信息,则应该使用FinAppProcessClient
里appletProcessApiManager
下的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?
)
# 调用示例
# 9. 小程序web-view组件 Cookie 设置
支持的app类型
小程序✅ 小游戏🚫 H5应用🚫
# 9.1 设置指定 url 的 Cookie
# 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)
# 调用示例
# 9.2 删除指定 Url 的 Cookie
# 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()
}
})