問題模塊 | 框架類型 | 問題類型 | API/組件名稱 | 終端類型 | 微信版本 | 基礎庫版本 |
---|---|---|---|---|---|---|
API和組件 | 小程序 | Bug | openSetting | 工具 | 6.7.2 | 2.3.0 |
- 當前 Bug 的表現(可附上截圖)
官方說明了openSetting的調用是支持通過tap去觸發showModal,再在showModal中調起的,但實際操作后,與說明的有出入。
由於實際開發中,為了方便授權,會將getSetting,showModal,openSetting封裝於一個函數,方便檢測權限並授權,但也應該是滿足了以上說的在tap中觸發的要求,但測試后,卻還是顯示如下提示
VM255:1 openSetting:fail can only be invoked by user TAP gesture.
- 預期表現
支持通過tap去觸發showModal,再在showModal中調起openSetting
- 復現路徑
導入代碼片段(需填寫appid,因為需要用到授權),如下操作:
1、點擊授權,此時點擊“取消”拒絕授權
2、再次點擊授權,此時由於判斷用戶已經拒絕過授權,所以會去調用showModal顯示確認授權框,此時點擊”確定“,回去調用openSetting。這個時候見控制台,就會有如下提示
openSetting:fail can only be invoked by user TAP gesture.
- 提供一個最簡復現 Demo
代碼片段:wechatide://minicode/PrIPLomJ7222
- 結論及解決方案
經官方開發解答,由於封裝的過程中使用了promise的方式去處理回調才導致的問題,改成直接普通的回調方式即可解決問題;
因此也就是原來的判斷方式和流程不變,只需要修改一下回調方式即可。
解決后的代碼片段:wechatide://minicode/wyAMUrmb7X2L