2014-06-28 26 views
0

我正在使用Google提供的示例实现GCM客户端(http://developer.android.com/google/gcm/client.html),但是当我发送测试消息时,我不知道如何接收它如何使用GCM在Android中解析或实际获取推送消息

这里是我用来发送消息的代码:

String msg = "";       
gcm = GoogleCloudMessaging.getInstance(BaseHeaderActivity.this); 

try { 
    Bundle data = new Bundle(); 
    data.putString("my_message", "Test message"); 
    data.putString("my_action", "com.google.android.gcm.demo.app.ECHO_NOW"); 
    String id = Integer.toString(msgId.incrementAndGet()); 
    gcm.send(ListCategoriesActivity.SENDER_ID + "@gcm.googleapis.com", id, data); 
    msg = "Sent message"; 
} 
catch (IOException ex) { 
    msg = "Error :" + ex.getMessage(); 
} 

return msg; 

消息似乎要发送的确定,然后从GcmIntentService方法空隙onHandleIntent(意向意图)被执行秒后我发送消息,但问题是,在intent里面的extras里面没有像我在发送消息的方法中放置的那些键:

data.putString("my_message", "Test message"); 
data.putString("my_action", "com.google.android.gcm.demo.app.ECHO_NOW"); 

这里是我GcmIntentService类:

public class GcmIntentService extends IntentService { 

private final String TAG = "GcmIntentService"; 

public GcmIntentService() { 
     super("GcmIntentService"); 
    } 

@Override 
protected void onHandleIntent(Intent intent) { 

    Bundle extras = intent.getExtras(); 

    Set<String> keys = extras.keySet(); 
    Log.i(TAG, "Received: " + extras.getString("my_message")); 

} 

... 
} 

的日志 “收稿日期null”,并且存在于额外的键是: [message_type,google.message_id,事件,机器人。 support.content.wakelockid]

任何想法??

在此先感谢。

+0

我面临同样的问题。你有答案吗? –

回答

1

您正试图从您的设备向您的服务器发送上游消息(设备到云)。只有当您有一台与Google的GCM CCS服务器建立XMPP连接的服务器时,它才会起作用。即使它确实有效,邮件也会到达您的服务器,而不是您的设备。

只有当您的服务器将其发送到您的设备时,您的意向服务才会收到您的消息。