编程语言
首页 > 编程语言> > javascript – Cordova仅在resume事件后执行插件

javascript – Cordova仅在resume事件后执行插件

作者:互联网

我在iOS上使用Cordova 3.5.0.

我的应用程序加载,’deviceReady’事件被触发,但直到我将我的应用程序放在后台(通过转到主屏幕)才执行插件操作.

当我回到我的应用程序时,’resume’处理程序被触发,日志显示在LLDB中,PushNotification插件开始侦听事件并尝试注册推送通知.

为什么只有在我的应用程序进入睡眠状态后才会发生这种情况?

这些是安装的插件(cordova插件ls):

com.patrickheneise.cordova.statusbar 0.0.2 "Status Bar"
com.phonegap.plugins.PushPlugin 2.2.1 "PushPlugin"
com.phonegap.plugins.actionsheet 1.0.0 "ActionSheet"
org.apache.cordova.console 0.2.10-dev "Console"
org.apache.cordova.dialogs 0.2.9-dev "Notification"
org.apache.cordova.vibration 0.3.10-dev "Vibration"

提前致谢.

解决方法:

我在自己的应用程序中遇到了与cordova 6.3.0相同的问题.
经过几十次测试后我发现了问题.

我有一个Content-Security-Policy元标记定义如下:

<meta http-equiv="Content-Security-Policy" content="default-src *;
      style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 
     'unsafe-eval'; media-src *">

事实证明,default-src *是不够的.

使用以下策略:

 <meta http-equiv="Content-Security-Policy" content="default-src *
       'self' data: gap:  https://ssl.gstatic.com; style-src 'self' 'unsafe-inline';
       script-src 'self' 'unsafe-inline' 'unsafe-eval'; media-src *">

这里的关键部分是差距:

似乎需要在iOS上正确执行cordova插件代码.
但我仍然觉得这个政策受到恢复应用程序的影响很奇怪.

附加说明:该问题似乎会影响在webview外部显示的所有插件.我用cordova-plugin-camera,phonegap-plugin-barcodescanner,cordova-plugin-dialogs.其他插件如cordova-plugin-file-transfer工作得很好.

标签:phonegap-pushplugin,javascript,ios,cordova,phonegap-plugins
来源: https://codeday.me/bug/20190830/1769411.html