【问题标题】:Notification plugin for PhoneGap not workingPhoneGap 的通知插件不起作用
【发布时间】: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 的投反对票 :)

标签: cordova


【解决方案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 之外的任何内容只是一个临时解决方案。考虑一下这个帖子stackoverflow.com/questions/19112436/…,而且我不应该混合使用phonegap和cordova,这是我的理智告诉我的:)(最后我回答了其他一些帖子:/)
    猜你喜欢
    • 2017-11-20
    • 2015-08-03
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多