【问题标题】:phonegap app freeze in ios10ios10中的phonegap应用程序冻结
【发布时间】:2017-04-29 16:50:55
【问题描述】:

我有一个 phonegap 应用程序,该应用程序一直正常工作,直到上周五,它在苹果商店中停止被接受并显示以下消息:

此应用尝试在没有使用说明的情况下访问隐私敏感数据。应用的 Info.plist 必须包含一个 NSPhotoLibraryUsageDescription 键和一个向用户解释应用如何使用这些数据的字符串值。

此应用尝试在没有使用说明的情况下访问隐私敏感数据。应用的 Info.plist 必须包含一个 NSBluetoothPeripheralUsageDescription 键和一个字符串值,向用户解释应用如何使用这些数据。

此应用尝试在没有使用说明的情况下访问隐私敏感数据。应用的 Info.plist 必须包含一个 NSMicrophoneUsageDescription 键和一个向用户解释应用如何使用这些数据的字符串值。

为了纠正这个问题,经过一番研究,我得出以下解决方案,在我的 config.xml 文件中添加一些cordova插件:

<plugin name="cordova-plugin-media-capture" source="npm" spec="1.4.0">
    <variable name="MICROPHONE_USAGE_DESCRIPTION" value="App would like to access your microphone." />
    <variable name="CAMERA_USAGE_DESCRIPTION" value="App would like to access the camera." />
    <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="App would like to access the library." />
</plugin>
<plugin name="cordova-plugin-ios-ble-permissions" source="npm" spec="*">
    <variable name="BLUETOOTH_USAGE_DESCRIPTION" value="App would like to access your bluetooth." />
</plugin>

这解决了苹果商店的问题,我确认 Info.plist 文件中包含所有这些变量。

但现在应用程序冻结/崩溃,并且仅在 iOs10 设备中。

我正在寻求一些指导/帮助,以确定问题的根源。

提前谢谢大家。


编辑:

Finnaly 能够远程调试应用程序并找出一些类似这样的错误:

[Error] Refused to load data:text/javascript;charset=utf-(...)-app-shell.html-170.js%0A 因为它没有出现在 Content 的 script-src 指令中安全政策

我当前的元标记具有以下值:

<meta http-equiv="Content-Security-Policy" content="default-src gap://ready file://* *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *; style-src 'self' 'unsafe-inline' *; img-src 'self' data: blob: *; media-src 'self' mediastream: blob:; connect-src * blob:">

和白名单配置:

<plugin name="cordova-plugin-whitelist" spec="1.3.1"/>
<access origin="*"/>
<allow-navigation href="*"/>
<allow-intent href="http://*/*"/>
<allow-intent href="https://*/*"/>
<allow-intent href="tel:*"/>
<allow-intent href="sms:*"/>
<allow-intent href="mailto:*"/>
<allow-intent href="geo:*"/>

任何提示我做错了什么?

【问题讨论】:

  • 在你更新之前,app的部署目标是什么?
  • 为了构建我使用npmjs.com/package/gulp-phonegap-build 的项目,目标平台是 ios 和 android,对于苹果商店中的部署,我使用 phoegap 网站 build.phonegap.com 中可用的 Ipa 文件并使用它与应用程序加载器。不确定我在回答你的问题...

标签: ios iphone cordova


【解决方案1】:

可能是Content-Security-Policy引起的。

尝试在&lt;meta&gt; 标签中添加default-src gap:

例如:

<head>
  <meta http-equiv="Content-Security-Policy" content="default-src * 'self' gap: wss: ws:; font-src * data:; img-src * data:; style-src 'self' https: 'unsafe-inline'; script-src 'self' https: 'unsafe-inline' 'unsafe-eval'">
</head>

参考: "No Content-Security-Policy meta tag found." error in my phonegap application

【讨论】:

  • 我听从了你的建议,但并没有解决问题,在闪屏后应用保持白色,什么时候应该进入登录页面
  • 本机代码或本地js代码可能出现问题。如果是本地 js 问题,尝试使用 Safari 检查您的应用并跟踪错误日志
【解决方案2】:

解决了!

在元标记中而不是:

script-src 'self' 'unsafe-inline' 'unsafe-eval' *

我补充说:

script-src 'self' 'unsafe-inline' 'unsafe-eval' data: *;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 2015-05-09
    • 2013-09-26
    • 2014-09-29
    • 2016-02-10
    相关资源
    最近更新 更多