Xcode PhoneGap navigator.connection 未定义

Posted

技术标签:

【中文标题】Xcode PhoneGap navigator.connection 未定义【英文标题】:Xcode PhoneGap navigator.connection Undefined 【发布时间】:2013-07-25 15:20:16 【问题描述】:

尝试将我的 PhoneGap javascript 代码移植到 Xcode 中,以便在 ios 中进行调试。 使用 Cordova-3.0.0。

当我打电话时:

navigator.connection.type

我得到一个 navigator.connection 的“未定义”。

我没有在我的 config.xml 中正确包含网络连接插件,还是有其他问题?是的,我专门为 iOS 包含了正确的 cordova.js 文件。是的,deviceready 已被触发。

更新:我目前只在 iOS 模拟器上运行它。

我的 config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.app.test" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>Hello Cordova</name>
    <description>
        Description
    </description>
    <author email="dev@callback.apache.org" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <access origin="*" />
    <preference name="fullscreen" value="true" />
    <preference name="webviewbounce" value="true" />
    <plugins>
        <plugin name="NetworkStatus" value="CDVConnection" />
    </plugins>
</widget>

感谢您的帮助!

【问题讨论】:

有没有运气解决这个问题?我在 BlackBerry 上遇到了同样的错误。 是的,今天终于弄明白了。请参阅下面的解决方案。他们更新了 iOS 的配置设置,并且可能也为 BlackBerry 更新了。检查 [PhoneGap API 文档 3.0.0][docs.phonegap.com/en/3.0.0/…. 为此干杯。不幸的是,我使用的是cordova 2.5.0,这不是我的问题。还是谢谢。 【参考方案1】:

一直在研究这个,终于想出了解决方案。 显然,PhoneGap (Adobe) 最近更新了他们的文档,并填补了我在 Phonegap 3.0.0 中遇到的许多漏洞

1) 要使用命令行界面执行此操作,您必须安装 git 才能运行这些命令。获取git here。

2) 他们在Connection 插件文档中添加了使用以下命令行界面命令将插件添加到项目中:

$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git
$ cordova plugin rm org.apache.cordova.core.network-information

3) 他们将 config.xml 文件中的声明更新为以下内容(适用于 iOS):

<feature name="NetworkStatus">
    <param name="ios-package" value="CDVConnection" />
</feature>

【讨论】:

deavisdude 的评论 这里的解决方案没有为我解决任何问题。事实上,我最初安装了这个版本的网络信息插件,仍然得到未定义的错误。我已经检查了所有内容并做了几天......你是如何让它工作的,你能发布一个工作示例吗? @deavisdude 这个例子是针对在 Cordova 3.0.0 发布的前几天遇到的一个 bug,不久之后文档就被修复了。这个问题在PhoneGap的后续版本中已经完全解决了,我已经成功使用了。更高版本将添加命令指定为(示例):cordova plugins add org.apache.cordova.network-information,无需手动编辑 config.xml。您正在运行哪个版本的 Cordova/Phonegap?这可能需要为您提供一个新的问题帖子。如果你这样做,请在此处发布链接,我可能会帮助你完成它。谢谢【参考方案2】:

如果您只是想知道您是否已连接,请尝试在您的 js 中使用 navigator.onLine。在 IOS 8 和 android 2.3 上为我工作,不需要任何插件

【讨论】:

虽然可能是这样,但您错过了主题的重点。该线程是因为 navigator 未定义,因此无论如何您都无法调用 navigator.onLine。 也许我错过了重点,但据我所知,OP 说“我正在为 navigator.connection 得到一个‘未定义’”而不是“我正在为导航器得到一个‘未定义’”所以也许 navigator.onLine 会为他们工作(或其他有类似问题的人)。 没错,自从我第一次发布这个问题以来已经很久了,我不记得 navigator 是否为空(我认为是)或 navigator.connection 是否为空。您对 OP 的措辞是正确的,我很抱歉。也许 navigator.onLine 会帮助某人。 @mike,谢谢!! navigator.onLine 已定义并且可以工作,即使没有插件。这是一个更简单的解决方案,因为股票插件似乎不起作用。

以上是关于Xcode PhoneGap navigator.connection 未定义的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap - navigator.app.backHistory() 不适用于 HTML 后退按钮

iOS notification.alert() 无法使用 Phonegap 2.3.0

PhoneGap navigator.camera.getPicture 不触发回调

phonegap android中navigator.geolocation.getCurrentLocation的奇怪行为

PhoneGap navigator.notification.alert 在 iOS 上不起作用

在 Android 2.0+ 上的 WebView 中使用 navigator.geolocation.getCurrentPosition(PhoneGap 相关)