【发布时间】:2015-11-11 09:21:13
【问题描述】:
我正在开发一款 PhoneGap 应用,但在安装一个特定模块“网络信息”(https://github.com/apache/cordova-plugin-network-information) 时遇到问题。 phonegap -v 显示我正在运行 5.3.7 版
所有其他插件似乎工作正常。这是我正在处理的应用程序中的一个问题,但我也设法在一个新应用程序中重现它:在这个示例中,我更改的唯一两个文件是 index.html 和 js/index.js,还有是没有 js/cordova.js 文件,自动包含(Cordova Network and Camera API returns undefined)
我使用以下命令创建了应用程序:
phonegap create ios-test
cd ios-test
phonegap cordova plugin add cordova-plugin-dialogs
phonegap cordova plugin add cordova-plugin-network-information
phonegap cordova plugin list的输出是:
cordova-plugin-dialogs 1.1.1 "Notification"
cordova-plugin-network-information 1.0.1 "Network Information"
根据here 的建议,我已将其包装在 setTimeout() 调用中,但这似乎没有什么不同。
这里是 HTML (index.html):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<title>Hello World</title>
</head>
<body>
<div class="app">
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript">
app.initialize();
</script>
</body>
</html>
还有 JS:
var app = {
initialize: function() {
this.bindEvents();
},
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
navigator.notification.alert('Test', null, 'Test', 'OK');
setTimeout(function() {
navigator.notification.alert('Debug', null, 'Checking connection', 'OK');
if (navigator.connection == undefined) {
navigator.notification.alert('navigator.connection is undefined', null, 'Error', 'OK');
return;
}
var networkState = navigator.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.CELL] = 'Cell generic connection';
states[Connection.NONE] = 'No network connection';
navigator.notification.alert('Network Status', null, 'Connection type: ' + states[networkState], 'OK');
}, 5000);
}
};
在我的 iPhone 上使用 phonegap serve 和开发者应用程序运行代码后,我收到调试警报,然后看到“navigator.connection 未定义”。
我也尝试过为 iOS 构建:
phonegap platform add ios
Adding ios project...
Running command: /Users/James/.cordova/lib/npm_cache/cordova-ios/3.9.2/package/bin/create /Web/ios-test/platforms/ios com.phonegap.helloworld "Hello World" --cli
iOS project created with cordova-ios@3.9.2
Discovered plugin "cordova-plugin-whitelist" in config.xml. Installing to the project
Fetching plugin "cordova-plugin-whitelist@1" via npm
Installing "cordova-plugin-whitelist" for ios
Installing "cordova-plugin-dialogs" for ios
Installing "cordova-plugin-network-information" for ios
这会创建一个platforms/ios 文件夹,但我仍然遇到同样的问题。
我也试过了:
检查 ARC 已启用,iOS8 phonegap cordova network-information app crashes
将以下内容添加到
config.xmlCheck internet connection on iOS app with Cordova Phonegap 3.3.0 not working:
<feature name="NetworkStatus"> <param name="ios-package" value="CDVConnection" /> </feature>
- 使用
navigator.network.connection.type代替Check internet connection on iOS app with Cordova Phonegap 3.3.0 not working - 检查AudioToolbox.framework和SystemConfiguration.framework都添加了:Cordova Network Plugin does not build on iOS
【问题讨论】:
标签: ios cordova phonegap-plugins cordova-plugins