wx.saveImageToPhotosAlbumの使用
使用方法の詳細については、公式文書を確認してください:公式文書
注:この記事は、WeChatデバッグベースライブラリの2.13.2バージョンでのテスト結果です。
資料によると、正しく呼んでおり、テスト後は問題ありませんが、その後のテストで携帯電話の中には問題が発生することがあり、認証ページがポップアップせず、プロンプトが表示されないことがあります。つまり、保存が失敗します。対話は非常に不親切なので、私はこの問題を解決し始めました。
問題の原因を分析します
多くの実際のマシンテストの結果、WeChatアプレットで、ユーザーが認証を拒否した場合、次のリクエストが行われたときに認証ウィンドウが再びポップアップしないことが発見されました。したがって、最初に認証ステータスを確認する必要があります。手動で認証リマインダーをポップアップします。
現時点では、wx.openSettingが認証ポップアップウィンドウをトリガーできないことが多いため、嫌がらせを防ぐために検討する必要があります。
一般的にプロンプト:
「saveImageToPhotosAlbum:failauthorize noresponse」
"saveImageToPhotosAlbum:fail authdeny"
……
不正なプロンプト
//这种写法是无效的,测试过
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: function(res) {},
fail: function(res) {
wx.openSetting({})//再次获取授权
}
})
それで、それをどのように解決するのですか?
呼び出しwx.saveImageToPhotosAlbum()这个API之前先做个判断,判断是否有这个权限了:
wx.getSetting()これはこの情報を取得できます
res.authSetting.hasOwnProperty( 'scope.writePhotosAlbum')このフィールドがある場合、ステータスはfalseであり、拒否されたことを示します。この場合、認証ウィンドウは自動的に再度ポップアップしません。
この時点で2つの治療を行うことができます:
- ポップアップウィンドウを呼び出して再認証します。これは他の開発者の計画に基づいています。テストの結果、一部の携帯電話が認証を取得できず、同じ権限を取得できないことがわかりました。効果を試すことができます。
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) {} }) } } } }
- ユーザーがウィンドウをポップアップして認証を再度要求することを拒否したため、現時点では、ユーザーはプロンプトを表示することしかできず、アプレットの設定機能でアルバムの認証を開くように求められます。この方法はどのモデルにも役立ちます!
この設定を開く方法はこれを見ることができます:WeChatアプレット設定管理
ここでのプロンプトは、許可されたユーザーが操作するためのものではなく、ウォームプロンプトは人間化された対話を実現するのに十分です。