0
点赞
收藏
分享

微信扫一扫

APP体验模式二次开发对接说明

yellowone 2024-12-04 阅读 7

APP的体验模式原理说明:

登录一个固定的账号来获取token,且token是临时的,不会保存在本地。下次进入APP时依旧回到登录页。

APP的体验模式实现方式:

当点击体验模式时,调用登录接口获取token,在全局状态管理中给一个变量来保存临时的token,给另一个变量标识此次登录为临时登录,在controller中暴露一个公共方法来获取token,在该方法中判断是否是临时登录,如果是临时登录,返回临时的token及api地址等等,如果不是临时登录,返回本地保存的token及保存的api地址等等。

APP体验模式二次开发对接方式:

在script标签下通过import引入controller,调用controller.getUserLoginMessage方法来获取当前用户登录的相关信息,无论是正常登录还是临时登录皆可从该方法中获取到登录后的信息。方法内部已经做了处理,不需要开发者在做任何其他处理。如下是内部部分实现方式:

import { storeToRefs } from 'pinia'
import { useExperienceModeStore } from '@/store/index.js'
import { sourceUrl } from '@/request/apiConfig.js'

const getUserLoginMessage = () => {
  const experienceModeStore = useExperienceModeStore()
  const { isExperienceMode, userMessage } = storeToRefs(experienceModeStore)
  let saveMessage = {}
  if (isExperienceMode.value) {
    const apiAddress = sourceUrl
    const loginMode = 'experience' // 体验模式
    saveMessage = { ...userMessage.value, apiAddress, loginMode }
  } else {
    saveMessage.token = uni.getStorageSync('token') && JSON.parse(uni.getStorageSync('token'))
    saveMessage.refreshToken = uni.getStorageSync('refreshToken') && JSON.parse(uni.getStorageSync('refreshToken'))
    saveMessage.apiAddress = uni.getStorageSync('apiAddress') ? uni.getStorageSync('apiAddress') : sourceUrl
    saveMessage.power = uni.getStorageSync('power') && JSON.parse(uni.getStorageSync('power'))
    saveMessage.userName = uni.getStorageSync('userName') && JSON.parse(uni.getStorageSync('userName'))
    saveMessage.userId = uni.getStorageSync('userId') && JSON.parse(uni.getStorageSync('userId'))
    saveMessage.loginMode = 'normal' // 正常登录模式
  }
  return saveMessage
}

export default getUserLoginMessage

使用方式可以参考以下:

<script setup>
import { onLoad } from "@dcloudio/uni-app";
import controller from '@/controller/index.js'

onLoad((option) => {
  const userLoginMessage = controller.getUserLoginMessage()
  if (userLoginMessage.loginMode === 'experience') {
      // 体验模式,体验模式下的逻辑
      xxx...
  } else if (userLoginMessage.loginMode === 'normal') {
      // 正常登录方式,正常登录下的逻辑
      xxx...
  }
  // 通用逻辑
})
</script>

举报

相关推荐

0 条评论