Phonegap PushNotification pour ouvrir une page d'application spécifique

Je propose des alertes pour Android / IOS. J'ai utilisé un plug-in Push-Plug de Phonegap https://github.com/phonegap-build/PushPlugin , ça semble fonctionner très bien.

Je reçois un message sur mon appareil maintenant le problème est Quand je clique sur le message reçu, il va à l'index.html de l'application. Mais je veux ouvrir une autre page, par exemple, home.html, lorsque j'ai cliqué sur le message et dans home.html. Afficher le message.

  • Passer à Android depuis J2ME
  • Le menu déroulant du navigateur Android ne fonctionne pas sur les périphériques Android 4.x
  • Comment télécharger des fichiers apk du marché Android vers le PC?
  • Android - Comment obtenir un temps de conduite estimé d'un endroit à l'autre?
  • Vérifiez si DAY_OF_WEEK est entre le lundi et le vendredi
  • Le curseur continuera-t-il en vie après la fermeture de la base de données?
  • Comment y parvenir?

    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, errorHandler, {"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> 

  • Rédaction d'un fichier sur sdcard
  • Android: détection de gestes fling
  • Poste double Android Volley quand ont une demande lente
  • Créer une barre de titre personnalisée dans Android
  • Android MediaCodec décode h264 cadre brut
  • Activité SingleTask, mais ouvert via deux applications différentes
  • 3 Solutions collect form web for “Phonegap PushNotification pour ouvrir une page d'application spécifique”

    Vous pouvez facilement l'accomplir,

    Étape 1: ouvrez votre fichier GCMIntentService.java

    Vérifiez la méthode surMessage

    Dans cette méthode, vous trouverez à partir d'ici qu'ils transmettent l'intention à votre MyPhoneGapActivity.java … Maintenant, ce que vous devez faire, c'est de passer des informations supplémentaires … Passer des informations supplémentaires à l'intention

    Vérifiez cette ligne

     Intent notificationIntent = new Intent(context, MyPhoneGapActivity.class); //here you pass the information notificationIntent.putExtra ("url",url); 

    Pouvez-vous voir ci-dessus, j'ai dépassé l'URL d'information supplémentaire … pour le code complet, voir ci-dessous

      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, 0, notificationIntent, 0); notif.setLatestEventInfo(context, title, message, contentIntent); String ns = Context.NOTIFICATION_SERVICE; NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns); mNotificationManager.notify(1, notif); } } } 

    Étape 2:

    Dans votre 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); 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); } } } 

    C'est maintenant quand vous cliquez sur la notification qu'il va charger le fichier home.html 🙂

    Je n'ai jamais utilisé ce plugin avant, mais il semble qu'il passe un message dans la notification que vous pouvez traiter dans votre application. Il semble donc que dans votre index.html vous pouvez lire ce message et s'il contient une certaine chaîne, redirigez vers main.html ou où vous voulez aller. Vous pourriez le faire pendant qu'un écran de démarrage est encore visible ou quelque chose afin que l'utilisateur ne voie pas une redirection de page déroutante.

    Je suis confronté à un même problème après quelques recherches enfin Got My Solution, si quelqu'un a le même problème. Veuillez suivre ce lien

    https://github.com/phonegap-build/PushPlugin/issues/213

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.