我正在收到我的设备上的消息现在的问题是当我点击收到的消息,它去应用程序index.HTML页面.但是我想打开另一个页面,例如home.HTML当我点击消息,在home.HTML我会显示消息.
如何实现这一点?
MyPhoneGapActivity.java
package com.test;import org.apache.cordova.DroIDGap;import androID.os.Bundle;public class MyPhoneGapActivity extends DroIDGap { @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setIntegerProperty("splashscreen",R.drawable.splash); super.setIntegerProperty("loadUrlTimeoutValue",60000); super.loadUrl("file:///androID_asset/www/index.HTML",10000); }}
index.Js
<script type="text/JavaScript"> var pushNotification; function onDeviceReady() { $("#app-status-ul").append('<li>deviceready event received</li>'); document.addEventListener("backbutton",function(e) { $("#app-status-ul").append('<li>backbutton event received</li>'); if( $("#home").length > 0) { // call this to get a new token each time. don't call it to reuse existing token. //pushNotification.unregister(successHandler,errorHandler); e.preventDefault(); navigator.app.exitApp(); } else { navigator.app.backHistory(); } },false); try { pushNotification = window.plugins.pushNotification; if (device.platform == 'androID' || device.platform == 'AndroID') { $("#app-status-ul").append('<li>registering androID</li>'); pushNotification.register(successHandler,errorHandler,{"senderID":"661780372179","ecb":"onNotificationGCM"}); // required! } else { $("#app-status-ul").append('<li>registering iOS</li>'); pushNotification.register(tokenHandler,{"badge":"true","sound":"true","alert":"true","ecb":"onNotificationAPN"}); // required! } } catch(err) { txt="There was an error on this page.\n\n"; txt+="Error description: " + err.message + "\n\n"; alert(txt); } } // handle APNS notifications for iOS function onNotificationAPN(e) { if (e.alert) { $("#app-status-ul").append('<li>push-notification: ' + e.alert + '</li>'); navigator.notification.alert(e.alert); } if (e.sound) { var snd = new Media(e.sound); snd.play(); } if (e.badge) { pushNotification.setApplicationIconBadgeNumber(successHandler,e.badge); } } // handle GCM notifications for AndroID function onNotificationGCM(e) { $("#app-status-ul").append('<li>EVENT -> RECEIVED:' + e.event + '</li>'); switch( e.event ) { case 'registered': if ( e.regID.length > 0 ) { $("#app-status-ul").append('<li>REGISTERED -> REGID:' + e.regID + "</li>"); // Your GCM push server needs to kNow the regID before it can push to this device // here is where you might want to send it the regID for later use. console.log("regID = " + e.regID); } break; case 'message': // if this flag is set,this notification happened while we were in the foreground. // you might want to play a sound to get the user's attention,throw up a dialog,etc. if (e.foreground) { $("#app-status-ul").append('<li>--INliNE NOTIFICATION--' + '</li>'); // if the notification contains a soundname,play it. var my_media = new Media("/androID_asset/www/"+e.soundname); my_media.play(); } else { // otherwise we were launched because the user touched a notification in the notification tray. if (e.coldstart) $("#app-status-ul").append('<li>--ColDSTART NOTIFICATION--' + '</li>'); else $("#app-status-ul").append('<li>--BACKGROUND NOTIFICATION--' + '</li>'); } $("#app-status-ul").append('<li>MESSAGE -> MSG: ' + e.payload.message + '</li>'); $("#app-status-ul").append('<li>MESSAGE -> MSGCNT: ' + e.payload.msgcnt + '</li>'); break; case 'error': $("#app-status-ul").append('<li>ERROR -> MSG:' + e.msg + '</li>'); break; default: $("#app-status-ul").append('<li>EVENT -> UnkNown,an event was received and we do not kNow what it is</li>'); break; } } function tokenHandler (result) { $("#app-status-ul").append('<li>token: '+ result +'</li>'); // Your iOS push server needs to kNow the token before it can push to this device // here is where you might want to send it the token for later use. } function successHandler (result) { $("#app-status-ul").append('<li>success:'+ result +'</li>'); } function errorHandler (error) { $("#app-status-ul").append('<li>error:'+ error +'</li>'); } document.addEventListener('deviceready',onDeviceReady,true); </script>解决方法 你可以很容易地完成这个,
步骤1:打开GCMIntentService.java文件
检查方法onMessage
在这种方法你会发现从这里他们传递意图到你的MyPhoneGapActivity.java …现在你要做的是你传递一些额外的信息….
传递一些额外的信息到意图
检查这一行
Intent notificationIntent = new Intent(context,MyPhoneGapActivity.class);//here you pass the informationnotificationIntent.putExtra ("url",url);
你可以看到上面我已经通过额外的信息url …完整的代码见下文
protected voID onMessage(Context context,Intent intent) { Log.d(TAG,"onMessage - context: " + context); // Extract the payload from the message Bundle extras = intent.getExtras(); if (extras != null) { boolean foreground = this.isInForeground(); extras.putBoolean("foreground",foreground); if (foreground){ PushHandlerActivity.sendToApp(extras); }else{ String message = extras.getString("message"); String Title = extras.getString("Title"); Notification notif = new Notification(androID.R.drawable.btn_star_big_on,message,System.currentTimeMillis() ); notif.flags = Notification.FLAG_auto_CANCEL; notif.defaults |= Notification.DEFAulT_SOUND; notif.defaults |= Notification.DEFAulT_VIBRATE; String url = "notify"; Intent notificationIntent = new Intent(context,MyPhoneGapActivity.class); //here you pass the information notificationIntent.putExtra ("url",url); notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_top); PendingIntent contentIntent = PendingIntent.getActivity(context,notificationIntent,0); notif.setLatestEventInfo(context,Title,contentIntent); String ns = Context.NOTIFICATION_SERVICE; notificationmanager mnotificationmanager = (notificationmanager) context.getSystemService(ns); mnotificationmanager.notify(1,notif); } } }
第2步:
在你的MyPhoneGapActivity.java
package com.test;import org.apache.cordova.DroIDGap;import androID.os.Bundle;public class MyPhoneGapActivity extends DroIDGap { @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setIntegerProperty("splashscreen",60000); Bundle extras = getIntent().getExtras(); String message = extras.getString("url"); if(message == "notify"){ super.loadUrl("file:///androID_asset/www/home.HTML",10000); }else{ super.loadUrl("file:///androID_asset/www/index.HTML",10000); } }}
现在,当您点击通知它将加载home.HTML文件:-)
总结以上是内存溢出为你收集整理的android – PhoneGap PushNotification打开一个特定的应用页面全部内容,希望文章能够帮你解决android – PhoneGap PushNotification打开一个特定的应用页面所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)