android – PhoneGap PushNotification打开一个特定的应用页面

android – PhoneGap PushNotification打开一个特定的应用页面,第1张

概述我对 Android / IOS做了pushnotification.我使用了一个phonegap推插件 https://github.com/phonegap-build/PushPlugin,似乎工作很好. 我正在收到我的设备上的消息现在的问题是当我点击收到的消息,它去应用程序index.html页面.但是我想打开另一个页面,例如home.html当我点击消息,在home.html我会显示消息 我对 Android / IOS做了pushnotification.我使用了一个phonegap推插件 https://github.com/phonegap-build/PushPlugin,似乎工作很好.

我正在收到我的设备上的消息现在的问题是当我点击收到的消息,它去应用程序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打开一个特定的应用页面所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1131075.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存