我正在尝试使用phonegap插件和GCM(Google云消息传递)服务为我的andriod应用集成推送通知。我已基本遵循本教程中客户端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"
}
}
我在设备上正确收到通知。我不确定代码中缺少什么,但我遇到了这些问题。
在我的设备的通知区域中,我只看到一个接一个地发送多条消息时的最后一条消息。看起来最后一条消息会覆盖旧消息。我希望所有警报在发送时一个接一个地列在设备上。
设备锁定时,屏幕顶部不会显示通知。
如何解决这些问题?我是移动开发的新手,我非常感谢你对此的帮助。提前谢谢!
答案 0 :(得分:0)
用于在设备锁定时获取通知。
公共抽象类WakeLocker { private static 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;
}
}
还要向您的Manifest添加以下权限。
<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
答案 1 :(得分:0)
新通知可能会覆盖旧通知,因为您在notify方法中使用相同的ID。使用唯一ID,您将收到多个通知。
关于第二个问题,read this。