PhoneGap 的通知插件不起作用

Posted

技术标签:

【中文标题】PhoneGap 的通知插件不起作用【英文标题】:Notification plugin for PhoneGap not working 【发布时间】:2014-06-03 09:01:10 【问题描述】:

我已经安装了这样的通知插件:

phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-dialogs.git

然后我在/www/文件夹中添加了config.xml

<feature name="Notification">
    <param name="android-package" value="org.apache.cordova.dialogs.Notification" />
</feature>

我已经尝试在我的index.html 中测试这样的插件:

    document.addEventListener("deviceready", onDeviceReady, true);

    function onDeviceReady() 
        alert('Device ready');

        var beep = function()
           try
               if(navigator != null)
                   navigator.notification.alert("2");
               else
                alert(navigator);
               
           catch(e)
               alert("Alert failed: " + e.message);
           
        

        beep();


    

但我总是收到“警报失败”作为 navigator.notification 未定义的消息。

我正在使用 phonegap 3.3.0-0.19.6 并使用 phonegap local build android 构建项目

我错过了什么?

【问题讨论】:

没有来自 logcat 的其他消息?例如,官方文档说你应该在你的 Manifest 文件中添加一个特定的权限&lt;uses-permission android:name="android.permission.VIBRATE" /&gt; 。可能这仅与振动有关,但实际上文档中没有任何内容说此权限不是强制性的。 感谢 lorenzo,但我没有在任何地方提到 vibration 字 :) 如果我使用 @987654332,我只对显示自定义警报通知感兴趣,而不是使用出现在 Android 上的标准黑色通知@ 我喜欢没有 cmets 的投反对票 :) 【参考方案1】:

我认为您应该使用不同的网址: phonegap local plugin add https://github.com/apache/cordova-plugin-dialogs

或者更好的是,使用 Cordova CLI 并执行以下操作: cordova plugin add org.apache.cordova.dialogs

然后 cordova prepare

这应该会为您更改 config.xml 等。

【讨论】:

我认为这两个 url 会产生同一个插件。我会检查。但是对于使用 Cordova CLI 的建议,我认为在同一个项目中混合使用 phonegapcordova 添加插件是不明智的。 phonegap 命令也会这样做 好吧,我不想让赏金积分白白浪费,我会奖励你积分。但是会看到我的问题的最终答案是什么,如果我找到了“错误”的原因并发布。谢谢【参考方案2】:

我正在使用 phonegap 云构建,对我来说,将以下行添加到 phonegap config.xml 解决了问题

<gap:plugin name="org.apache.cordova.dialogs" />

【讨论】:

你是在哪个版本上做的?好像是2.9 之前的版本?【参考方案3】:

查看/assets/www/cordova_plugins.js 文件,看看它对通知插件的引用是否是这样的,


        "file": "plugins/org.apache.cordova.dialogs/www/notification.js",
        "id": "org.apache.cordova.dialogs.notification",
        "merges": [
            "navigator.notification"
        ]
    ,
    
        "file": "plugins/org.apache.cordova.dialogs/www/android/notification.js",
        "id": "org.apache.cordova.dialogs.notification_android",
        "merges": [
            "navigator.notification"
        ]
    ,

还要检查 /assets/www/plugins/org.apache.cordova.dialogs/www 文件夹内容。它与您的 cordova_plugins.js 文件中引用的相同吗?

【讨论】:

【参考方案4】:

我遇到了同样的问题,这是你必须做的才能让它工作:

使用cordova cli:

 cordova plugin add org.apache.cordova.dialogs

cordova build

然后,cordova build 并不总是将正确的行添加到 config.xml - 所以我们必须将其更改为以下内容: (在 app/res/xml/config.xml - 不是 www 文件夹)

<feature name="Notification">
    <param name="android-package" value="org.apache.cordova.dialogs.Notification" />
</feature>

【讨论】:

谢谢,但我使用的是phonegap而不是cordova,所有通知似乎都已正确安装。我应该使用而不是你的命令,我应该使用local phonegap plugin add org.apache.cordova.dialogs 不,但是:A.注意我的第二条评论 - 你在 - app/res/xml/config.xml 上有正确的线路吗? B. 对我来说 cordova 解决了一些问题,所以考虑使用它。 谢谢,但是:A. 看看我的问题 :) 你的意思是将这些行添加到 config.xml 吗?另外,我必须注意,更改 www/config.xml 之外的任何内容只是一个临时解决方案。考虑一下这个帖子***.com/questions/19112436/…,而且我不应该混合使用phonegap和cordova,这是我的理智告诉我的:)(最后我回答了其他一些帖子:/)

以上是关于PhoneGap 的通知插件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

phonegap 推送通知在 iPhone 上不起作用

构建后phonegap推送插件不起作用

datePicker 插件在 Phonegap 2.0 中不起作用

PhoneGap 构建插件不起作用

在 PhoneGap/Cordova 中安排本地通知在 iOS 模拟器上不起作用

Phonegap蓝牙插件不起作用