我正在使用cordova-firebase-plugin,推送通知的iOS要求之一是授予权限,问题是使用cordova-firebase-plugin grantPermission
没有正确的回调成功/错误 - 因此,当调用grantPermission时,它会将权限请求弹出给用户,但在后台应用程序会继续加载。
插件权限调用是一个没有回调的基本功能:
window.FirebasePlugin.grantPermission();
我需要暂停应用加载,并且只有在用户授予/拒绝权限请求后才会继续。以下是我尝试在我的应用程序的app init部分执行此操作:
function iosPush() {
var q = $q.defer() ;
if (/(iPad|iPhone|iPod)/i.test(navigator.userAgent)) {
window.FirebasePlugin.grantPermission(function(status) {
q.resolve(status) ;
},function(err) {errMgmt("ctrl/init",35,"iOS Push ask Permission error: "+err) });) ;
} else {
q.resolve("Android") ;
}
return q.promise ;
}
iosPush().then(function(status) {
return getLocationAuth()
}).then(function(status) {
...do other stuff...
}) ;
我暂停应用程序的尝试无法正常工作。有人可以协助或指出我如何在请求iOS权限时实现app init暂停?
最后,无论用户选择什么,授予或拒绝权限,status
始终为null
答案 0 :(得分:0)
我遇到了同样的问题。
我最终使用https://github.com/dpa99c/cordova-diagnostic-plugin来检查权限状态。弹出一个带按钮的弹出窗口。当用户关闭权限对话框时,他必须通过单击按钮来关闭弹出窗口。然后我再次检查权限状态。这不是一个解决方案,它只是一种解决方法。有点难看,但有效。
您自己找到了解决方案吗?
答案 1 :(得分:0)
我接近原来的问题......不得不将其修改为以下内容:
hasPermission
在函数中,double iframe
充当grantPermission成功/失败回调。有点像kludge,但它的功效就像魅力。