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.confirmdeviceready 事件中。当我执行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。此外,alertbeepvibrate 通知按预期工作。 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

如何在 build.phonegap.com 中添加插件

phonegap build + phonegap-cli + ionic 图标

我可以使用 Phonegap Build 在 Phonegap 中播放视频吗

Build.Phonegap Facebook SDK

PhoneGap Build 上的 Hello World