Resuelva el problema de que la imagen del subprograma de WeChat guardada en la API del álbum a veces no se guarda y no se puede autorizar.

Uso de wx.saveImageToPhotosAlbum

Para obtener detalles sobre cómo usarlo, puede consultar el documento oficial : documento oficial

Nota: Este artículo es el resultado de la prueba en la versión 2.13.2 de la biblioteca base de depuración de WeChat.

De acuerdo con el documento, lo hemos llamado correctamente y no hay ningún problema después de la prueba, pero se encuentra que a veces algunos teléfonos móviles tienen problemas durante las pruebas posteriores, y la página de autorización no se puede abrir y no hay ningún aviso. es decir, el guardado no es exitoso La interacción es muy poco amigable, así que comencé a resolver este problema.


Analizar la causa del problema.

Después de muchas pruebas de máquinas reales, se descubrió que en el subprograma WeChat, si el usuario rechazaba la autorización, la ventana de autorización no volvería a aparecer cuando se realiza la siguiente solicitud. Por lo tanto, es necesario determinar primero el estado de la autorización. y aparecerá manualmente el recordatorio de autorización.

En este momento, wx.openSetting a menudo no puede activar la ventana emergente de autorización y se debe considerar para evitar el acoso.

Generalmente rápido:

"saveImageToPhotosAlbum: no autoriza ninguna respuesta"

"saveImageToPhotosAlbum: fail auth deny"

……

Aviso no autorizado

//这种写法是无效的,测试过
wx.saveImageToPhotosAlbum({
   filePath: res.tempFilePath,
   success: function(res) {},
   fail: function(res) {
      wx.openSetting({})//再次获取授权
     }
})

Entonces, ¿cómo solucionarlo?

Vocaciónwx.saveImageToPhotosAlbum()这个API之前先做个判断,判断是否有这个权限了:

wx.getSetting () esto puede obtener esta información

res.authSetting.hasOwnProperty ('scope.writePhotosAlbum') Si existe este campo, el estado es falso, lo que indica que ha sido rechazado. En este caso, la ventana de autorización no volverá a aparecer automáticamente

En este momento se pueden realizar dos tratamientos:

  1. Llame a la ventana emergente para volver a autorizar. Esto se basa en el plan de otros desarrolladores. Después de probar, descubrí que algunos teléfonos móviles no pueden obtener autorización y no se pueden obtener los mismos permisos. Puede probar el efecto.
    wx.getSetting({
      success: (res) => {
      if(res.authSetting.hasOwnProperty(‘scope.writePhotosAlbum’)=== false ){
       wx.showModal({
         title: '提示',
         content: '需要获取相册权限',
         success: function (res) {
         if (res.confirm) {
          //  打开授权页面,让用户手动打开权限
          wx.openSetting({
          success: function (data) {}
         })
         }
      }
     }
    }

     

  2. Dado que el usuario se negó a poder abrir la ventana para solicitar la autorización nuevamente, en este momento, solo puede hacer una solicitud, solicitando al usuario que abra la autorización del álbum en la función de configuración del subprograma. ¡Este método es útil para cualquier modelo!

     Cómo abrir esta configuración puede ver esto: Gestión de la configuración del subprograma WeChat

     Los avisos aquí no son para que los usuarios autorizados operen, y los avisos cálidos son suficientes para lograr una interacción humanizada.

Supongo que te gusta

Origin blog.csdn.net/xiao_bin_shen/article/details/110876392
Recomendado
Clasificación