cordova angularjs强制app暂停等待用户权限

时间:2017-08-03 16:44:44

标签: ios angularjs cordova callback user-permissions

我正在使用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

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

我最终使用https://github.com/dpa99c/cordova-diagnostic-plugin来检查权限状态。弹出一个带按钮的弹出窗口。当用户关闭权限对话框时,他必须通过单击按钮来关闭弹出窗口。然后我再次检查权限状态。这不是一个解决方案,它只是一种解决方法。有点难看,但有效。

您自己找到了解决方案吗?

答案 1 :(得分:0)

我接近原来的问题......不得不将其修改为以下内容:

hasPermission

在函数中,double iframe充当grantPermission成功/失败回调。有点像kludge,但它的功效就像魅力。