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

# 其他

这里一般都是通用方法

# 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}`)
}
© FinClip with ❤ , Since 2017