Phonegap PushNotification zum öffnen einer bestimmten app-Seite
Mache ich pushnotification für Android/IOS.Ich habe phonegap push-plugin https://github.com/phonegap-build/PushPlugin, es scheint gut zu funktionieren.
Ich erhalte eine Nachricht auf meinem Gerät das problem ist nun Wenn ich auf die empfangene Nachricht geht es zur app index.html Seite.Aber ich möchte zu öffnen someother Seite zB home.html wenn ich klickte auf die Nachricht und in home.html ich werde mit message.
Wie Sie diese erreichen?
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>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie leicht erreichen dies,
Schritt 1 : Öffnen Sie die GCMIntentService.java Datei
Check für die Methode onMessage
in dieser Methode finden Sie hier, die Sie übergeben, in der Absicht zu Ihr MyPhoneGapActivity.java ...Nun, was Sie tun müssen, ist, übergeben Sie einige zusätzliche Informationen....
Vorbei an einigen zusätzlichen Informationen, um die Absicht
Prüfen, ob diese Zeile
Können Sie oben sehen, ich habe bestanden zusätzliche Informationen url ...für den vollständigen code siehe unten
Schritt 2:
In Ihrem MyPhoneGapActivity.java
Das ist es jetzt, wenn Sie auf die Benachrichtigung klicken und es lädt die home.html Datei:-)
if(message == "notify")
der Bildschirm wird weiß nach dem splash-screen. Eine Sache zu beachten ist, in der falschen Voraussetzung, es geht in Ordnung.file:///android_asset/www/index.html#custompage
oder einige Parameter, z.B.file:///android_asset/www/index.html?page=custom
. Es gibt keine Notwendigkeit fürhome.html
. Nur mit javascript zu verarbeitenwindow.location.hash
oder die url-Parameter, wenn das Gerät bereit ist.Ich habe noch nie verwendet dieses plugin vor, aber es sieht aus wie es geht ein
message
in der Benachrichtigung, die Sie verarbeiten in Ihrer Anwendung. Es scheint daher, dass in Ihremindex.html
Sie konnte Lesen, Sie diese Meldung, und wenn es enthält eine bestimmte Zeichenfolge, Umleitung aufmain.html
oder wohin Sie gehen möchten. Sie könnte dies tun, während der splash-screen ist immer noch sichtbar, oder etwas, so dass der Benutzer nicht sehen, eine schrille Seite umleiten.Stehe ich vor demselben problem nach einigen Recherchen Habe endlich Meine Lösung, Falls jemand Dasselbe Problem .Folgen Sie bitte diesen link
https://github.com/phonegap-build/PushPlugin/issues/213