# 其他
# 1. 设置小程序Activity的切换动画
# API
/**
* 设置小程序Activity的切换动画
*
* @param anim [Anim]动画
*/
fun setActivityTransitionAnim(anim: Anim)
# 调用示例
FinAppClient.appletApiManager.setActivityTransitionAnim(SlideFromRightToLeftAnim)
FinAppClient.INSTANCE.getAppletApiManager().setActivityTransitionAnim(SlideFromRightToLeftAnim.INSTANCE);
# 2. 原生发送事件给小程序
# API
/**
* 原生发送事件给小程序
* @param appId
* @param params 事件参数
*/
fun sendCustomEvent(appId: String, params: String)
# 调用示例
FinAppClient.appletApiManager.sendCustomEvent("app", "{\"test\":\"123\"}")
FinAppClient.INSTANCE.getAppletApiManager().sendCustomEvent("app", "{\"test\":\"123\"}")
# 3. 跨进程调用接口
# 3.1 主进程调用小程序进程
调用 需要在主进程调用
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("返回结果给主进程")
}
})
}
# 3.2 小程序进程调用主进程
调用 需要在小程序进程调用
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("返回结果给小程序进程")
}
})
# 4. 在小程序进程调用api
FinAppClient.appletApiManager
只能在主进程中使用
在小程序进程中要使用FinAppProcessClient.appletProcessApiManager
之中的方法。
如
FinAppProcessClient.appletProcessApiManager.getCurrentAppletId()
FinAppProcessClient.appletProcessApiManager.getAppletInfo()
FinAppProcessClient.appletProcessApiManager.sendCustomEvent(params)
# 5. 更多面板里的处理事件
当我们自定义更多小程序面板时,虽然UI是自己设计的,但是部分功能还可以复用SDK里的,比如 关于页面、设置页面、投诉反馈、转发等。可以在按钮的点击事件里调用MoreMenuHelper
下面的api来实现跳转和相应的逻辑。
# 5.1 跳转至关于小程序页面
fun goToAboutPage(context: Context)
示例代码:
MoreMenuHelper.goToAboutPage(context)
# 5.2 触发转发事件
/**
* 触发转发动作,与SDK默认菜单“转发”行为一致,需要在代理方法shareAppMessage()内处理转发逻辑
*/
fun invokeForwardMenuAction(context: Context)
示例代码:
MoreMenuHelper.invokeForwardMenuAction(context)
# 5.3 跳转至投诉反馈页面
fun goToFeedbackPage(context: Context)
示例代码:
MoreMenuHelper.goToFeedbackPage(context)
# 5.4 跳转至设置页面
fun goToSettingPage(context: Context)
示例代码:
MoreMenuHelper.goToSettingPage(context)
# 5.5 获取小程序的debug模式
fun isEnableAppletDebug(context: Context): Boolean
示例代码:
MoreMenuHelper.isEnableAppletDebug(context)
# 5.6 设置小程序的debug模式
/**
* 打开/关闭小程序的debug模式 如果config设置了enableAppletDebug为true,执行打开/关闭debug模式操作会无效
* @param enableAppletDebug true 打开, false 关闭
*/
fun setEnableAppletDebug(context: Context, enableAppletDebug: Boolean)
示例代码:
MoreMenuHelper.setEnableAppletDebug(context, true)
# 5.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(
activity: FinAppHomeActivity,
pageWebViewId: Int?,
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 ->
}
# 5.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? ->
}
# 6.生成token
/**
* 生成token。
* 根据原始字符串,加上特殊字符,使用国密生成token。
* @param originText 原始字符串
* @return 生成的token
*/
fun generateTokenWithOriginText(originText: String): String
示例代码:
val token = FinAppClient.appletApiManager.generateTokenWithOriginText("6007a0a122bad000012813eb");
# 7.解密token
/**
* 解密token,获取token里的原始字符串
* @param token 使用generateTokenWithOriginText:生成的token
* @return 返回原始字符串
*/
fun originTextWithToken(token: String): String
示例代码:
val originText = FinAppClient.appletApiManager.originTextWithToken(token);