为科尔多瓦定制 PushPlugin。 (适用于安卓)

Posted

技术标签:

【中文标题】为科尔多瓦定制 PushPlugin。 (适用于安卓)【英文标题】:Customizing PushPlugin for cordova. (For android) 【发布时间】:2015-08-23 11:52:06 【问题描述】:

我花了将近 3 天的时间让 PushPlugin 与我的应用程序一起工作。我有以下问题 为此,我必须按照“https://github.com/kentmw/PushPlugin”的建议修改 PushPlugin

    当应用程序暂停或关闭时,pushBundle 未传递给应用程序。 (这个问题有很多挣扎。这个问题也在 gitbucket 上讨论过。 关于如何解决这个问题的讨论不是很清楚。所以我也在写这个问题并回答它。)

    如果通知被用户清除(未点击),pushBundle 没有被传递给应用程序。

    我正在做一些适合我的应用的更改。

【问题讨论】:

好问题。我answered之前也有类似的问题。它可能解决了#1 和#2。请在PushPlugin 创建并提交拉取请求,并在我的回答中添加评论。这样更多的人会知道这个解决方案。它甚至可能被合并到原始存储库中。 此外,如果您将这个问题专门用于一个目的,它会不那么复杂。您可以在不同的问题中解决 #3 中的所有更改。 【参考方案1】:

因此,根据作者的说法,您每次打开应用程序时都必须向 Google GCM 服务器注册您的应用程序,以便在收到通知时可以调用回调函数。

所以我相应地做了以下更改。

在插件中的变化是不同的here。

在此更改中深入寻找pushCachedExtras()。在什么情况下被调用。

对 2 个文件进行了更改1. src/android/com/plugin/gcm/PushPlugin.java 2. www/PushNotification.js

在您的代码中,您必须执行类似的操作

if(ALREADY_REGISTERED)   
    pushNotification.setECB(success, error,  "senderID" :"SENDER_ID_HERE","ecb": "window.onNotificationGCM" );  
  else  
    pushNotification.register(success, error,  "senderID" :"SENDER_ID_HERE","ecb": "window.onNotificationGCM" );  
   

每次您必须在应用程序启动时使事件回调可用,直到那时 pushBundle 是"cached"

调试插件

adb logcat -s GCMIntentService:* PushPlugin:*

注意:我正在处理第 2 点和第 3 点,并且还将对 ios 插件进行更改。

【讨论】:

以上是关于为科尔多瓦定制 PushPlugin。 (适用于安卓)的主要内容,如果未能解决你的问题,请参考以下文章

科尔多瓦推送插件服务器端php

在 Visual Studio 中导入工作的科尔多瓦项目给出错误

Phonegap PushPlugin 消息事件被调用两次

UIFileSharingEnabled 在我的适用于 ios 的科尔多瓦应用程序中无效

如何在适用于 ios 7 的科尔多瓦 3.9.2 中删除 index.html

Phonegap PushPlugin 无法接收通知 ios