# 其他
这里一般都是通用方法
# 1.生成token
/**
* 使用原始文本生成令牌
* @param text 原始文本
*/
generateTokenWithOriginText(text: string): string;
示例代码:
const text = '6007a0a122bad000012813eb'
const token = client.generateTokenWithOriginText(text)
# 2.解密token
/**
* 使用生成令牌获取原始文本
* @param token 令牌
*/
originTextWithToken(token: string): string
示例代码:
const text = client.originTextWithToken(token)
# 3.更新用户数据
/**
* 更新用户信息数据
* @param type - 要更新的用户信息数据类型,可以修改用户 ID 或者 phone。
* @param value - 要设置的用户数据。
* @returns 如果操作成功则返回 true。
*/
updateUserInfo(type: 'userId' | 'phone', value: string): boolean
示例代码:
client.updateUserInfo('userId','newUserId')
client.updateUserInfo('phone','130xxxxxxxx')
# 4.宿主App输入日志到小程序的vConsole
/**
* 宿主APP写日志到 vConsole
* @param appId - 小程序的 ID。
* @param msg - 需要写入的数据
* @param consoleLevel - 日志等级
* @param apiServer - 与小程序关联的 API 服务器。
* @param appRunId - 小程序运行 ID。
* @returns 包含日志添加结果或错误的结果。
*/
public addConsoleLog(appId: string, msg: string, consoleLevel: 'log' | 'warn' | 'error' | 'info', apiServer?: string, appRunId?: string): IFinApplet.IFinAppResult<boolean>
示例代码:
client.addConsoleLog('appId','this is from arkTs', 'log')
# 5. 更多面板里的处理事件
当我们自定义更多小程序面板时,虽然UI是自己设计的,但是部分功能还可以复用SDK里的,比如 关于页面、设置页面、投诉反馈、转发等。可以在按钮的点击事件里调用 MoreMenuHelper 下面的api来实现跳转和相应的逻辑。
使用 MoreMenuHelper 需要先获取
const moreMenuHelper = FinAppClient.getInstance()?.getMoreMenuHelper(appId, apiServer)
# 5.1 跳转至关于小程序页面
/**
* 打开小程序的关于页面
*/
public goToAboutPage():void
示例代码:
moreMenuHelper?.goToAboutPage()
# 5.2 触发转发事件
/**
* 触发转发事件,用来获取转发时用到的小程序信息,获取到小程序信息后,会触发 FinAppProxyHandlerManager.buttonOpenTypeHandler.forwardAppletWithInfo
* @returns
*/
public invokeForwardMenuAction():void
示例代码:
moreMenuHelper?.invokeForwardMenuAction()
# 5.3 跳转至投诉反馈页面
/**
* 打开小程序的意见反馈页面
*/
public goToFeedbackPage():void
示例代码:
moreMenuHelper?.goToFeedbackPage()
# 5.4 跳转至设置页面
/**
* 打开小程序的设置页面
* @param onPop 设置页面关闭时触发的回调
*/
public goToSettingPage(onPop?: () => void):void
示例代码:
moreMenuHelper?.goToSettingPage()
# 5.5 获取小程序的debug模式
get isEnableAppletDebug(): boolean
示例代码:
const isDebug = moreMenuHelper?.isEnableAppletDebug
# 5.6 设置小程序的debug模式
/**
* 打开/关闭小程序的debug模式
* @param enableDebug
* @returns
*/
public setEnableAppletDebug(enableDebug: boolean): boolean
示例代码:
moreMenuHelper?.setEnableAppletDebug(true)
# 5.7 检测小程序是否实现自定义菜单功能
由于部分自定义菜单需要小程序返回数据,功能类似onShareAppMessage的实现。可以调用如下方法判断小程序当前页面是否实现了on{menuId}ButtonHandler方法。
interface ICustomMiniProgramMenuRes {
eventName: string
menuId: string
value: boolean
}
/**
* 检测小程序是否实现自定义菜单功能
* @param menuIds 自定义图标ID数组
* @returns 检测结果,类型为 {"eventName": ##小程序事件名##,"menuId": ##图标ID##, "value": ##事件是否实现#}
*/
public checkMenus(menuIds: string[]): Promise<ICustomMiniProgramMenuRes[]>
示例代码:
const menuIds = ['WXShareAPPFriends', 'WXShareAPPMoments', 'customMenu']
const result = await moreMenuHelper?.checkMenus(menuIds)
# 5.8 触发自定义菜单功能
针对于需要小程序返回数据的自定义菜单项,可以调用该方法获取到对应小程序页面on{menuId}ButtonHandler方法返回的小程序信息。
/**
* 触发自定义菜单项(需要小程序配合实现的菜单项,需要小程序提供额外调用参数)。获取到小程序返回的信息后,会触发 FinAppProxyHandlerManager.moreMenuHandler.onCustomMenuItemClickWithInfo
* @param menuId 自定义图标ID
*/
public invokeMiniProgramTypeMenuAction(menuId: string)
示例代码:
moreMenuHelper?.invokeMiniProgramTypeMenuAction('customMenu')
# 6. 小程序页面栈打开原生页面
在某些场景下,需要在小程序页面栈打开原生页面,可以使用以下方法。调用完后,小程序页面栈状态为:【小程序页面A,原生页面A】
/**
* 在小程序当前页面push一个原生页面
* @param appId - 小程序的 ID。
* @param pageName - 页面的路由名称
* @param extParam - 传给原生页面的额外参数
* @param animate - 跳转是否开启动画
* @param apiServer - 与小程序关联的 API 服务器。
* @param appRunId - 小程序运行 ID。
* @returns 包含 API 调用结果或错误的结果,不包含跳转结果
*/
async pushNativePage(pageName: string, appId: string, extParam?: object, animate?: boolean, apiServer?: string, appRunId: string = ''): Promise<IFinApplet.IFinAppResult<boolean>>
示例代码:
// 这里的 nativePageName 是原生页面的路由名称,需要在 route_map.json 中配置,小程序内部跳转使用的是 Navigation 而不是 Router,需要特别注意
FinAppClient.getInstance()?.pushNativePage('nativePageName', appId)
如果想在调用完 pushNativePage
打开的页面中再跳转小程序中的页面,可以使用以下方法。调用完后,小程序页面栈状态为:【小程序页面A,原生页面A,小程序页面B】
/**
* 打开指定小程序的某个页面
* @param appId - 小程序的 ID。
* @param pagePath - 小程序页面path
* @param query - 小程序页面query
* @param apiServer - 与小程序关联的 API 服务器。
* @param appRunId - 小程序运行 ID。
* @returns 包含跳转结果或错误的结果
*/
async pushAppletPage(pagePath: string, appId: string, query?: string, apiServer?: string, appRunId: string = ''): Promise<IFinApplet.IFinAppResult<boolean>>
示例代码:
// 这里的小程序页面 path,需要是小程序中注册过的页面路径,否则会返回对应错误信息
const res = FinAppClient.getInstance()?.pushAppletPage('/pages/logs/logs', appId,'foo=bar')
if (res?.errMsg) {
promptMsg(`pushAppletPage fail:${res.errMsg}`)
}