旧的推送通知未出现在 android 设备上
Posted
技术标签:
【中文标题】旧的推送通知未出现在 android 设备上【英文标题】:old push notifications not appearing on android device 【发布时间】:2013-10-05 02:31:44 【问题描述】:我正在尝试使用 phonegap 插件和 GCM(Google Cloud Messaging)服务为我的 android 应用程序集成推送通知。我基本上已经按照本教程在客户端 http://devgirl.org/2013/07/17/tutorial-implement-push-notifications-in-your-phonegap-application/ 的所有步骤通过 phonegap 插件注册设备。
我已经通过 git phonegap 本地插件添加了 phonegap 插件,如上述教程的“第 1 部分:配置您的应用程序以使用 PushPlugin”。
在 index.js 文件中,我添加了上述教程“第 2 部分:向 Google Cloud Messaging 服务注册应用程序”中提到的以下方法。
successHandler: function(result)
alert('Callback Success! Result = '+result)
,
errorHandler:function(error)
alert(error);
,
onNotificationGCM: function(e)
switch( e.event )
case 'registered':
if ( e.regid.length > 0 )
console.log("Regid " + e.regid);
alert('registration id = '+e.regid);
break;
case 'message':
// this is the actual push notification. its format depends on the data model from the push server
alert('message = '+e.message+' msgcnt = '+e.msgcnt);
break;
case 'error':
alert('GCM error = '+e.msg);
break;
default:
alert('An unknown GCM event has occurred');
break;
为了从应用服务器发送通知,我使用 HTTP POST 到 https://android.googleapis.com/gcm/send,请求正文为 json 格式。
“registration_ids” : ["APA....."],
“data” :
“title” : “My Title”,
“message” : “My Msg”,
“msgcnt” : “1"
我可以在我的设备上正确接收通知。我不确定我在代码中遗漏了什么,但我遇到了这些问题。
在我设备的通知区域中,当多条消息相继发送时,我只能看到最后一条消息。看起来最后一条消息覆盖了旧消息。我希望所有警报在发送时一个接一个地列在设备上。
当设备被锁定时,通知不会出现在屏幕顶部。
如何解决这些问题?我是移动开发的新手,非常感谢您的帮助。提前致谢!
【问题讨论】:
请将您的代码粘贴到您生成通知的位置 Mittal,我基本上是按照上面教程的第 1 部分和第 2 部分通过 GCM 服务注册设备,并使用纯 HTTP Post 将消息发送到设备。我在这个逻辑中错过了什么吗?提前致谢! 【参考方案1】:新通知覆盖旧通知可能是因为您在 notify 方法中使用了相同的 id。使用唯一 ID,您将收到多个通知。
关于第二个问题,read this。
【讨论】:
感谢您的回复。关于第一个答案,我在任何地方都没有任何通知方法。这是一个简单的 HTTP 帖子,将消息发送给用户。我需要有任何特殊的 java 包装器吗?你能给我提供更多信息吗?同样对于第二个答案,我在客户端或服务器端都没有涉及此流程的任何 Java 代码。我是否需要任何特殊的包装来解决这些问题?你能再澄清一下吗?非常感谢! 感谢您的帮助,伊兰。在我修改了 notify 方法中的 id 之后,这才起作用。 你是怎么做到的@user2848482?我也在使用 HTTP。【参考方案2】:用于在设备锁定时获取通知。
公共抽象类 WakeLocker 私有静态 PowerManager.WakeLock wakeLock;
public static void acquire(Context context)
if (wakeLock != null)
wakeLock.release();
PowerManager pm = (PowerManager) context
.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "WakeLock");
wakeLock.acquire();
public static void release()
if (wakeLock != null)
wakeLock.release();
wakeLock = null;
还将以下权限添加到您的清单中。
<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
【讨论】:
感谢您的回复。关于第二个答案,我目前在客户端或服务器端都没有涉及此流程的任何 Java 代码。我是否需要任何特殊的包装来解决这些问题?你能再澄清一下吗?非常感谢! 亲爱的,我所做的将 phonegap 与 android 集成以进行推送通知是我用 java 编码并将其用作我 index.html 中的插件 感谢您的回复。米塔尔,我能在互联网上看到任何例子吗?非常感谢!以上是关于旧的推送通知未出现在 android 设备上的主要内容,如果未能解决你的问题,请参考以下文章