Android 操作GCM下游消息

Android 操作GCM下游消息,android,push-notification,google-cloud-messaging,Android,Push Notification,Google Cloud Messaging,我正在创建一个使用GCM的Android应用程序。我已经实现了XMPP CCS应用服务器的双向功能。到目前为止,上游消息传递工作得很好——设备注册自己,获得令牌ID,并将相关数据发送到应用服务器。应用服务器还可以解析传入的上游消息并将其保存在数据库中。我还为一组令牌创建了notification_键,即使这样也可以正常工作 下游消息传递也工作得很好。我收到来自GCM的消息。但是,在打开通知时,我想打开一个活动,根据服务器的输出计算某些位置,并在Google地图上显示输出位置。我该怎么做?我试图在

我正在创建一个使用GCM的Android应用程序。我已经实现了XMPP CCS应用服务器的双向功能。到目前为止,上游消息传递工作得很好——设备注册自己,获得令牌ID,并将相关数据发送到应用服务器。应用服务器还可以解析传入的上游消息并将其保存在数据库中。我还为一组令牌创建了notification_键,即使这样也可以正常工作

下游消息传递也工作得很好。我收到来自GCM的消息。但是,在打开通知时,我想打开一个活动,根据服务器的输出计算某些位置,并在Google地图上显示输出位置。我该怎么做?我试图在
onMessageReceived
函数中创建一个IntentService,但它不起作用

MyGcmListenerService
导入android.app.Activity;
导入android.app.NotificationManager;
导入android.app.pendingent;
导入android.content.Context;
导入android.content.Intent;
导入android.media.ringtonemager;
导入android.net.Uri;
导入android.os.Bundle;
导入android.support.v4.app.NotificationCompat;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入android.support.v7.app.AppActivity;
导入com.google.android.gms.gcm.GcmListenerService;
导入com.google.android.gms.maps.GoogleMap;
导入com.google.android.gms.maps.model.Circle;
导入com.google.android.gms.maps.model.CircleOptions;
导入com.google.android.gms.maps.model.LatLng;
导入java.util.ArrayList;
导入java.util.StringTokenizer;
公共类MyGcmListenerService扩展了GcmListenerService{
公共停车位中点;
公共双lat;
公共双液化天然气;
公共字符串位置;
公众拾票人拾票人;
公共最终整数位置选择器请求=1;
公共谷歌地图;
公共最终字符串SERVER\u KEY=“MY\u GCM\u SERVER\u KEY”;
公共双货币;
公共双货币;
@凌驾
消息接收时的公共void(来自的字符串,捆绑数据){
字符串类型=data.getString(“类型”);
//如果播出,,
if(“meetup.be2015.gcm_meetup.BROADCAST.”等于(类型)){
//向Google Directions and places API发出请求
//提取经纬度
String latitude_str=data.getString(“latitude”);
字符串经度=data.getString(“经度”);
this.lat=Double.parseDouble(纬度);
this.lng=Double.parseDouble(经度);
字符串dest_msg=“目的地::“+lat+”,“+lng;
发送通知(目的地消息,“广播”);
//启动一个服务来处理JSON数据
Intent directioncontent=新的Intent(getApplicationContext(),Directions.class);
方向内容putExtra(“当前时间”,当前时间);
DirectionIntent.putExtra(“当前长度”,当前长度);
方向内容putExtra(“目标平面”,平面);
指示内容putExtra(“目标长”,液化天然气);

startService(DirectionIntent);//在发送通知时添加一些数据,如下所示

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("midpoint", midpoint);
intent.putExtra("radius", radius);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
            PendingIntent.FLAG_ONE_SHOT);
然后在mainActivity Cals中实现以下方法

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if (intent.hasExtra("radius")) {

        midpoint = intent.getStringExtra("midpoint");
        radius = intent.getStringExtra("radius");
        // do what ever you want with this data.
    }
}
如果上述方法不起作用,还可以尝试像这样检查onCreate中的意图数据

if (intent.hasExtra("radius")) {

   midpoint = intent.getStringExtra("midpoint");
   radius = intent.getStringExtra("radius");
   // do what ever you want with this data.
}
我希望这会对你有所帮助

if (intent.hasExtra("radius")) {

   midpoint = intent.getStringExtra("midpoint");
   radius = intent.getStringExtra("radius");
   // do what ever you want with this data.
}