# 其他
# 1. 设置小程序Activity的切换动画
支持的app类型
小程序✅ 小游戏✅ H5应用✅
# API
/**
* 设置小程序Activity的切换动画
*
* @param anim [Anim]动画
*/
fun setActivityTransitionAnim(anim: Anim)
# 调用示例
# 2. 原生发送事件给小程序
支持的app类型
小程序✅ 小游戏✅ H5应用✅
# API
/**
* 原生发送事件给小程序
* @param appId
* @param params 事件参数
*/
fun sendCustomEvent(appId: String, params: String)
# 调用示例
# 3. 创建一个[FinAppletWebView]实例
改方法已于
2.12.4
版本废弃,若需要用到FinAppletWebView
,直接实例化该类即可。
# API
/**
* 创建一个[FinAppletWebView]实例
*
* @param context [Context]对象
* @return 一个[FinAppletWebView]实例
*/
fun createFinAppletWebView(context: Context): FinAppletWebView
# 调用示例
# 4. 跨进程调用接口
# 4.1 主进程调用小程序进程
支持的app类型
小程序✅ 小游戏✅ H5应用✅
调用 需要在主进程调用
FinAppClient.appletApiManager.callInAppletProcess(
FinAppClient.appletApiManager.getCurrentAppletId().orEmpty(),
"主进程调用小程序进程方法名",
"主进程调用小程序进程参数",
object : FinCallback<String> {
override fun onSuccess(result: String?) {
toast("小程序进程返回的结果:$result")
}
override fun onError(code: Int, error: String?) {
}
override fun onProgress(status: Int, info: String?) {
}
})
接收 需要在小程序进程注册处理方法 可通过FinAppClient.isFinAppProcess(context)
判断是否是小程序进程
if (FinAppClient.isFinAppProcess(this)) {
FinAppProcessClient.appletProcessApiManager.setMainProcessCallHandler(
object : IAppletProcessApiManager.MainProcessCallHandler {
override fun onMainProcessCall(
name: String,
params: String?,
callback: IApiCallback?
) {
toast("主进程调用小程序进程:name:$name,params:$params")
callback?.onSuccess("返回结果给主进程")
}
})
}
# 4.2 小程序进程调用主进程
支持的app类型
小程序✅ 小游戏✅ H5应用✅
调用 需要在小程序进程调用
FinAppProcessClient.appletProcessApiManager.callInMainProcess(
"小程序进程调用主进程的方法名",
"小程序进程调用主进程的参数",
object : FinCallback<String> {
override fun onSuccess(result: String?) {
toast("小程序进程调用主进程成功:$result")
}
override fun onError(code: Int, error: String?) {
}
override fun onProgress(status: Int, info: String?) {
}
})
接收 需要在主进程注册处理方法
FinAppClient.appletApiManager.setAppletProcessCallHandler(
object : IAppletApiManager.AppletProcessCallHandler {
override fun onAppletProcessCall(
name: String,
params: String?,
callback: IApiCallback?
) {
application.toast("小程序进程调用主进程:name:$name,params:$params")
callback?.onSuccess("返回结果给小程序进程")
}
})
# 5. 在小程序进程调用api
FinAppClient.appletApiManager
只能在主进程中使用
在小程序进程中要使用FinAppProcessClient.appletProcessApiManager
之中的方法。
如
FinAppProcessClient.appletProcessApiManager.getCurrentAppletId()
FinAppProcessClient.appletProcessApiManager.getAppletInfo()
FinAppProcessClient.appletProcessApiManager.sendCustomEvent(params)
# 6. 更多面板里的处理事件
支持的app类型
小程序✅ 小游戏✅ H5应用✅
当我们自定义更多小程序面板时,虽然UI是自己设计的,但是部分功能还可以复用SDK里的,比如 关于页面、设置页面、投诉反馈、转发等。可以在按钮的点击事件里调用MoreMenuHelper
下面的api来实现跳转和相应的逻辑。
# 6.1 跳转至关于小程序页面
fun goToAboutPage(context: Context)
示例代码:
MoreMenuHelper.goToAboutPage(context)
# 6.2 触发转发事件
/**
* 触发转发动作,与SDK默认菜单“转发”行为一致,需要在代理方法shareAppMessage()内处理转发逻辑
*/
fun invokeForwardMenuAction(context: Context)
示例代码:
MoreMenuHelper.invokeForwardMenuAction(context)
# 6.3 跳转至投诉反馈页面
fun goToFeedbackPage(context: Context)
示例代码:
MoreMenuHelper.goToFeedbackPage(context)
# 6.4 跳转至设置页面
fun goToSettingPage(context: Context)
示例代码:
MoreMenuHelper.goToSettingPage(context)
# 6.5 获取小程序的debug模式
fun isEnableAppletDebug(context: Context): Boolean
示例代码:
MoreMenuHelper.isEnableAppletDebug(context)
# 6.6 设置小程序的debug模式
/**
* 打开/关闭小程序的debug模式 如果config设置了enableAppletDebug为true,执行打开/关闭debug模式操作会无效
* @param enableAppletDebug true 打开, false 关闭
*/
fun setEnableAppletDebug(context: Context, enableAppletDebug: Boolean)
示例代码:
MoreMenuHelper.setEnableAppletDebug(context, true)
# 6.7 检测小程序是否实现自定义菜单功能
由于部分自定义菜单需要小程序返回数据,功能类似onShareAppMessage的实现。可以调用如下方法判断小程序当前页面是否实现了on{menuId}ButtonHandler方法。
/**
* 检测小程序是否实现自定义菜单功能
* 其中onShareAppMessage事件受小程序是否调用了showShareMenu/hideShareMenu API影响
* 若小程序调用了showShareMenu后调用该方法检测,则无论小程序是否实现onShareAppMessage事件,该事件对应的value为true
* 若小程序调用了hideShareMenu后调用该方法检测,则无论小程序是否实现onShareAppMessage事件,该事件对应的value为false
*
* @param callback result JSONArray元素为{"eventName":"小程序事件名","menuId":"菜单id","value":"事件是否实现"}
*/
fun checkMenus(
context: Context,
menuIds: List<String>,
callback: (result: JSONArray) -> Unit
)
示例代码:
val menuIds = mutableListOf<String>()
menuIds.add("WXShareAPPFriends") // 菜单配置信息在小程序onShareAppMessage方法提供
menuIds.add("WXShareAPPMoments") // 菜单配置信息在小程序onShareAppMessage方法提供
menuIds.add("customMenu"); // 菜单配置信息在小程序onCustomMenuButtonHandler方法提供
MoreMenuHelper.checkMenus(context, menuIds) { result ->
}
# 6.8 获取自定义菜单项的数据
针对于需要小程序返回数据的自定义菜单项,可以调用该方法获取到对应小程序页面on{menuId}ButtonHandler方法返回的小程序信息。
/**
* 获取[MoreMenuType.ON_MINI_PROGRAM]类型的菜单数据
*
* @param callback 参数字段说明请参考代理方法onRegisteredMoreMenuItemClicked()
*/
fun getMiniProgramTypeMenuData(
context: Context,
menuId: String?,
callback: (appId: String, path: String, menuItemId: String, appInfo: String?, bitmap: Bitmap?) -> Unit
)
示例代码:
getMiniProgramTypeMenuData(context, "customMenu") {
appId: String, path: String, menuItemId: String, appInfo: String?, bitmap: Bitmap? ->
}
# 7.生成token
工具方法,不需要区分小程序、小游戏、H5应用。
/**
* 生成token。
* 根据原始字符串,加上特殊字符,使用国密生成token。
* @param originText 原始字符串
* @return 生成的token
*/
fun generateTokenWithOriginText(originText: String): String
示例代码:
val token = FinAppClient.appletApiManager.generateTokenWithOriginText("6007a0a122bad000012813eb");
# 8.解密token
工具方法,不需要区分小程序、小游戏、H5应用。
/**
* 解密token,获取token里的原始字符串
* @param token 使用generateTokenWithOriginText:生成的token
* @return 返回原始字符串
*/
fun originTextWithToken(token: String): String
示例代码:
val originText = FinAppClient.appletApiManager.originTextWithToken(token);
# 9.上报自定义事件API
工具方法,不需要区分小程序、小游戏、H5应用。
/**
* @param appletId 小程序ID
* @param eventId 事件ID
* @param data 事件数据
* @return 是否成功
*/
fun reportEvent(appletId:String, eventId:String, data:JSONObject):Boolean
示例代码:
val data = JSONObject()
data.put("test1", "xxx")
data.put("test2", "yyy")
FinAppClient.appletToolManager.reportEvent("需要上报事件的小程序id", "上报的事件id", data)
# 10.宿主App输入日志到小程序的vConsole
工具方法,不需要区分小程序、小游戏、H5应用。
/**
* 日志输出到小程序的vConsole
* @param logMsg 日志内容
* @param logLevel 日志级别
* @param appletId 小程序ID
* @param callback 回调
*/
fun addConsoleLog(logMsg:String,logLevel:LogLevel,appletId:String,callback: FinSimpleCallback<String>? = null)
示例代码:
FinAppClient.appletToolManager.addConsoleLog("xxxxx你需要打印的日志内容", IAppletToolManager.LogLevel.WARN, "需要把日志输入在哪个小程序的vConsole上面的小程序id")