PhoneGap Build - navigator.notification.confirm 不工作(方法未定义)
Posted
技术标签:
【中文标题】PhoneGap Build - navigator.notification.confirm 不工作(方法未定义)【英文标题】:PhoneGap Build - navigator.notification.confirm not working (method undefined) 【发布时间】:2013-10-17 10:18:07 【问题描述】:我正在使用 AngularJS 和 Phonegap Build 开发一个 android/ios 应用,使用 Chrome 中的 Ripple Emulator 进行本地调试。
navigator.notification.confirm 对我不起作用,而 navigator.notification.alert、navigator.notification.beep 和 navigator.notification.vibrate 工作正常。 Chrome 说:"Uncaught TypeError: Object [object Object] has no method 'confirm'"
,iOS 模拟器什么都不做。
我的 config.xml 中有 <gap:plugin name="org.apache.cordova.core.dialogs" />
和 <preference name="phonegap-version" value="3.0.0" />
,而我的 index.js 在 deviceready
回调中有以下内容:
navigator.notification.confirm("Yes or no?", function(), "Confirmation", "Yes,No");
有什么想法吗?谢谢。
【问题讨论】:
你的页面有 onDeviceReady() 吗? 是的,navigator.notification.confirm
在deviceready
事件中。当我执行console.log(navigator.notification);
时,它会显示Object alert: function, beep: function, vibrate: function
。所以navigator.notification
中显然没有confirm
方法???文件说它在那里....
chrome 不会做任何事情...,我建议您在原始设备上进行测试,
【参考方案1】:
我刚刚尝试了全新安装 (Cordova 3.1.x),它运行良好,没有任何问题。我自己使用cordova plugin add org.apache.cordova.dialogs
安装了插件,这与使用phonegap-build 有点不同。我认为这可能是 PGB 的问题,但我将提出的一个建议是更改:<gap:plugin name="org.apache.cordova.core.dialogs" />
到 <gap:plugin name="org.apache.cordova.dialogs" />
,即删除 .core 部分,因为 core 已从命名空间中删除(但 3.0 可能仍然存在。)
【讨论】:
根据文档 (build.phonegap.com/plugins/74),您需要像 @belomat 一样的插件行:<gap:plugin name="org.apache.cordova.core.dialogs" />
在 3.1 上,您需要删除核心:github.com/apache/cordova-plugin-dialogs/commit/… 看起来 OP 正在特别要求 v3.0.0,但他的 <gap>
行应该可以工作(我认为。)
感谢您的回复,但它对我不起作用。我已经更新到PhoneGap 3.1.0并将插件更改为<gap:plugin name="org.apache.cordova.dialogs" />
,但结果是一样的。函数navigator.notification
只有三种方法:alert、beep、vibrate。
抱歉,我无法提供更多帮助,除了尝试寻找特定的 phonegap 支持外,我不知道有什么建议。我认为他们有一个讨论 PGB 问题的论坛。也少了提示功能吧?【参考方案2】:
正如 mvp 所说,您需要确保您的页面上有一个 onDeviceReady 函数,并且在它被触发之前不要调用任何 API。
此外,请确保您的 html 页面的 <head></head
标记中有以下内容:
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
【讨论】:
感谢您的反馈。我的页面中有phonegap.js
。此外,alert
、beep
和 vibrate
通知按预期工作。 navigator.notification
只有这三种方法,confirm
对我来说不见了(见我上面的回答)。【参考方案3】:
对话框插件中应该没有振动功能,只有警报、哔声、确认和提示。 但是如果你安装了振动插件,那么你当然应该会看到振动。
如果您只看到警报、哔声和振动,那么我会说您的插件安装有问题...我最近看到的。
我相信这个问题适用于全新安装,因为 MBillau 提到他的应用运行良好。在已经存在的应用程序上安装插件对我来说似乎是错误的。这是我发现的:
我使用了 3 个插件(媒体、设备、通知),而通知是唯一一个不工作的插件。设备准备就绪后也会发出通知(我可以播放媒体并获取设备信息,然后尝试通知,但什么也没有)。
我遇到的问题是 phonegap CLI 添加插件的方式。
www/corodova_plugins.js 中没有通知条目,但媒体和设备有条目 android/src/org/apache/cordova 中没有用于通知的 SRC,但有用于媒体和设备的 SRC。 www/plugins 中没有用于对话框的 JS src,但有用于媒体和设备的 JS src。
检查这些位置,看看您是否有通知信息。
我尝试使用各种命令多次添加插件。 config.xml DID 包括:
PROJECT.DIR/plugins DID 有对话框以及媒体和设备 SRC。
警告:运行“phonegap build android”会将正确的源代码放在提到的文件夹中,但它会清除 assets/www 中的所有 src。
我的补救措施:创建一个全新的骨架项目,添加您需要的插件,为您需要的平台进行构建,然后比较您的骨架 Phonegap 应用程序和您的 Real 应用程序之间的源代码以查看差异。我现在唯一能看到的方法是,PhoneGap CLI 似乎“损坏”了,因为我不相信它会正确地将插件添加到现有的应用程序中。
【讨论】:
以上是关于PhoneGap Build - navigator.notification.confirm 不工作(方法未定义)的主要内容,如果未能解决你的问题,请参考以下文章
Urban Airship phonegap 3.5 with Phonegap Build
phonegap build + phonegap-cli + ionic 图标