作为背景 - 在此之前,我为iOS(Swift)编写了一些原生应用程序,但这是我第一个使用PhoneGap的应用程序。我的目标是华为P8 lite,运行Android 5.0。我正在使用PhoneGap Build。
所以这是我的问题: 我在网络服务器服务器上运行了一些cgi脚本。 我只需打开一个特定的网站即可执行这些脚本。 我写了一个小的javascript函数,它将HttpRequest发送到服务器。 PhoneGap-Build用于从我的html代码生成应用程序。
问题是,它在我的笔记本电脑上工作正常(通过有线连接,或通过WIFI),但只要我在手机上试用(通过WIFI)它就什么都不做。 这是我的功能:
function openGate() {
var xhttp;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
alert("Error");
}
xhttp.open("GET", "http://172.17.113.100/cgi-bin/main.py?mod=door&op=open", "true");
xhttp.send(null);
}
关联的HTML文件已加载到我的移动设备上。按下按钮时调用此功能。这是相关的代码:
<!DOCTYPE html>
<html>
<head>
<title>Steuerung-Screen</title>
<scripe src="js/steuerung.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="css/steuerung.css" />
</head>
<body>
<div class="Steuerung">
<h1>Steuerung</h1>
</div>
<div class="Control">
<table>
<tr>
<td>
<button type="button" id="up" onClick="openGate();"> <img src="img/Arrow_Up_nice.png" alt=""> </button>
</td>
</tr>
</table>
</div>
</body>
感谢您的时间和帮助!
答案 0 :(得分:1)
@ F-丹尼尔,
你有一些常见的错误。
未设置构建版本。这有破坏您的代码的副作用,并且没有博客帖子让您知道这一点。尝试通过phonegap-version
为您的构建设置版本。设置插件的版本。
“未设置版本”的一个副作用是您必须使用whitelist
插件及相关部件。它没有很好地记录。 (我有笔记。见下文。)注意:这可能会立即让你修复。
小心打开网站的套接字。 (注意,这是获取数据的推荐方式。但是,如果Google或Apple认为您正在编写网站包装器,他们可能会拒绝您的应用。(注意:我在下面的链接中直接引用Apple。)< / p>
要修复:
在#1上,阅读:
在#2,
您需要应用whitelist
系统。从Cordova Tools 5.0.0开始(2015年4月21日)。对于 Phonegap Build ,这意味着自cli-5.1.1
(2015年6月16日)
将此添加到您的config.xml
<plugin name="cordova-plugin-whitelist" source="npm" spec="1.1.0" />
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" /> <!-- Required for iOS9 -->
注意您的应用程序现在已不确定。由您来保护您的APP。
将以下内容添加到index.html
<meta http-equiv="Content-Security-Policy"
content="default-src *;
style-src * 'self' 'unsafe-inline' 'unsafe-eval';
script-src * 'self' 'unsafe-inline' 'unsafe-eval';">
注意您的应用程序现在已不确定。由您来保护您的APP。
当您准备好确保应用安全时,请阅读:
HOW TO apply the Cordova/Phonegap the whitelist system
在#3,
阅读#5(特别是#5的最后一部分,参见Apple的引用)
Top Mistakes by Developers new to Cordova/Phonegap
现在太累了加。我会在12小时内检查一下。