最近在开发一个视频和工具类的小程序,类似于小年糕,需要实现将用户制作的影集保存到本地手机的相册上,页面效果如下: 实现的逻辑如下: 1. 获取用户授权, 如果之前已授权直
最近在开发一个视频和工具类的小程序,类似于小年糕,需要实现将用户制作的影集保存到本地手机的相册上,页面效果如下:
实现的逻辑如下:
1. 获取用户授权, 如果之前已授权直接下载。
2. 如果用户之前没有授权,则调起用户授权界面,让用户授权,用户同意则下载,不同意则提示。
3. 如果之前调起授权了,但是用户拒绝了,打开设置界面,引导用户开启授权。
以下是代码实现,欢迎大家复制粘贴和吐槽。
首先是WXML代码:
<view class="album-operate"> <view class="edit" bindtap="deleteAlbum" data-id="{{item.id}}" data-status="{{item.status}}"> 删除 </view> <button class="save" data-link="{{item.link}}" data-status="{{item.status}}" bindtap='downloadAlbum'> 保存/下载 </button> <view class="share" bindtap="desabledShare" wx:if="{{item.status==2}}">分享</view> <button class="share" open-type="share" data-id="{{item.id}}" data-cover="{{item.cover_url}}" data-name="{{item.name}}" wx:if="{{item.status!=2}}"> 分享 </button> </view>
以下是JS代码
// 授权下载 downloadAlbum: function(e) { var that = this; // 影集状态 var status = e.target.dataset.status; // 下载链接的地址 var link = e.target.dataset.link; if (status == 2) { wx.showToast({ title: '影集正在制作中,请等待', icon: 'none' }); } else { // 获取用户授权 wx.getSetting({ success(res) { // 如果已授权 if (res.authSetting['scope.writePhotosAlbum']) { that.saveAlbum(link); // 如果没有授权 } else if (res.authSetting['scope.writePhotosAlbum'] === undefined) { // 调起用户授权 wx.authorize({ scope: 'scope.writePhotosAlbum', success() { that.saveAlbum(link); }, fail() { wx.showToast({ title: '您没有授权,无法保存到相册', icon: 'none' }) } }) // 如果之前授权已拒绝 } else { wx.openSetting({ success(res) { if (res.authSetting['scope.writePhotosAlbum']) { that.saveAlbum(link); } else { wx.showToast({ title: '您没有授权,无法保存到相册', icon: 'none' }) } } }) } } }) } }, // 保存影集 saveAlbum: function (link) { wx.downloadFile({ url: link, success(res) { if (res.statusCode === 200) { var path = res.tempFilePath wx.saveVideoToPhotosAlbum({ filePath: path, success(res) { if (res.errMsg == 'saveVideoToPhotosAlbum:ok') { wx.showToast({ title: '下载完成', }) } } }) } } }) },
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。