微信小程序授权问题(地理位置、相册)

我是用uni-app写的小程序,如果使用源生小程序api的方法是需要修改的。我的需求是从小程序下载图片,我会调用uni.downloadFile把文件下载下来,然后用uni.saveImageToPhotosAlbum下载图片到系统相册。这两个方法还是比较简单的。因为用户没有授权,而导致下载下载失败,会弹出popup这个弹窗,popup可以去下载一个插件。为什么要自己画一个弹窗而不是直接调用uni.openSetting()这个方法,是因为微信为了防止开发者滥用此接口,使用户在无任何操作时,不断地强行跳转至设置页,导致用户无法正常使用甚至无法退出小程序。其他详细的说明,和其他的调用方法可以看这里:https://developers.weixin.qq.com/community/develop/doc/000cea2305cc5047af5733de751008 。有下载的文件的时候,开发者设置里面的downloadFile合法域名必须正确添加好域名,不然不能下载


methods: {
    downloadIMG() {
        uni.downloadFile({
            url: this.codeUrl,
            success: (res) => {
                uni.showLoading({
                    title: '正在下载'
                })

                if(res.statusCode == '200') {
                    let filePath = res.tempFilePath
                    
                    uni.saveImageToPhotosAlbum({
                        filePath,
                        success: (res)=> {
                            console.log(res);
                            uni.hideLoading()
                            uni.showToast({
                                title: '下载成功'
                            })
                        },
                        fail: (err)=> {
                            uni.hideLoading()
                            this.open()
                        }
                    });
                }
            },
            fail: (err) => {
                uni.showToast({
                    title: '下载失败'
                })
            }
        })
    },
    authorization() {
        uni.openSetting()
        this.close()
    },
    open() {
        this.$refs.popup.open()
    },
    close() {
        this.$refs.popup.close()
    }
}

写漏了一段,补上。使用uni.openSetting()之前判断一下用户有没有把相册功能关闭,如果关闭了再执行方法

uni.getSetting({
  success:res=>{
    this.status = res.authSetting['scope.writePhotosAlbum']
    }
})

你可能感兴趣的:(微信小程序授权问题(地理位置、相册))