utils.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /**
  2. * VisionKit 视觉能力状态码
  3. * @param {number} state 状态码
  4. * @param {boolean} user 用户可操作的项
  5. * @param {string} msg 状态信息
  6. */
  7. export const VK_STATE = [
  8. {
  9. "state": 0,
  10. "user": false,
  11. "msg": "成功"
  12. },
  13. {
  14. "state": 104,
  15. "user": true,
  16. "msg": "用户取消授权"
  17. },
  18. {
  19. "state": 112,
  20. "user": false,
  21. "msg": "接口未在隐私协议中声明"
  22. },
  23. {
  24. "state": 1025,
  25. "user": false,
  26. "msg": "小程序隐私接口被封禁,解决方案参考链接"
  27. },
  28. {
  29. "state": 1026,
  30. "user": false,
  31. "msg": "小游戏隐私接口被封禁,解决方案参考链接"
  32. },
  33. {
  34. "state": 2000001,
  35. "user": false,
  36. "msg": "参数错误"
  37. },
  38. {
  39. "state": 2003000,
  40. "user": false,
  41. "msg": "会话不可用"
  42. },
  43. {
  44. "state": 2000000,
  45. "user": false,
  46. "msg": "系统错误"
  47. },
  48. {
  49. "state": 2000002,
  50. "user": false,
  51. "msg": "设备不支持"
  52. },
  53. {
  54. "state": 2000003,
  55. "user": false,
  56. "msg": "系统不支持"
  57. },
  58. {
  59. "state": 2000004,
  60. "user": false,
  61. "msg": "设备不支持"
  62. },
  63. {
  64. "state": 2003001,
  65. "user": true,
  66. "msg": "未开启系统相机权限"
  67. },
  68. {
  69. "state": 2003002,
  70. "user": true,
  71. "msg": "未开启小程序相机权限"
  72. }
  73. ]
  74. /**
  75. * 检测当前设备VisionKit 支持版本
  76. * 如果不是用户可操作的状态,直接取上一次的值
  77. * v1 / v2 是硬件问题,不需要重复检测
  78. */
  79. export const checkVKVsion = async () => {
  80. return new Promise(reslove => {
  81. const v1 = wx.getStorageSync('vk_version1_err')
  82. const v2 = wx.getStorageSync('vk_version2_err')
  83. if (v1 && !VK_STATE.find(el => el.state === v1)?.user) {
  84. reslove(null)
  85. } else if (v2 && !VK_STATE.find(el => el.state === v2)?.user) {
  86. reslove('v1')
  87. } else {
  88. const session_v2 = wx.createVKSession({
  89. track: {
  90. plane: {
  91. mode: 1
  92. },
  93. },
  94. version: 'v2'
  95. })
  96. const session_v1 = wx.createVKSession({
  97. track: {
  98. plane: {
  99. mode: 3
  100. },
  101. },
  102. version: 'v1',
  103. })
  104. session_v2.start((err2) => {
  105. if (err2) {
  106. wx.setStorageSync('vk_version2_err', err2)
  107. session_v1.start(err1 => {
  108. if (err1) {
  109. wx.setStorageSync('vk_version1_err', err1)
  110. reslove(null)
  111. } else {
  112. reslove('v1')
  113. }
  114. session_v1.destroy()
  115. })
  116. } else {
  117. reslove('v2')
  118. }
  119. session_v2.destroy()
  120. })
  121. }
  122. })
  123. }