我无法通过Google云端消息在我的Android设备中收到我的消息?

时间:2012-08-20 11:21:24

标签: android python google-cloud-messaging

我使用python作为服务器应用程序将我的消息发送到GCM Server以在注册的Android设备上接收。我从带有消息ID的GCM服务器获得了成功。

在Android手机上,我正在arg1功能onMessage()中接收数据,但只有arg1中的两个键,from& collapse_key

在以下Java代码中,from键包含LongInt值& messagenull

有人能告诉我在Java Code或Python Code中缺少什么东西吗?

这是我的JavaCode:

@Override
protected void onMessage(Context arg0, Intent arg1) {
    // TODO Auto-generated method stub
    String keys="";
    for (String key : arg1.getExtras().keySet())
        keys+=key+"||";
    String mess = arg1.getExtras().getString("from");
    String mess1 = arg1.getExtras().getString("message");
}

Python代码:

def SelectAction(request,client_id):
    if request.method == 'GET':

        message = request.GET.get('message','')
        if not message:
            return Error(message = "Argument Missing.")
        registration=  Registration.objects.get(registeredUser = user)
        values = {}
        values['registration_id'] = registration.appId
        values['data.message'] = message
        param = urllib.urlencode(values)
        req = urllib2.Request("https://android.googleapis.com/gcm/send", param)
        req.add_header( 'Content-Type' , 'application/x-www-form-urlencoded;charset=UTF-8' )
        req.add_header( 'Authorization' , 'key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
        response = urllib2.urlopen(req)
        reply = {}
        if response.read().split('=')[0] == 'id':
            reply['error'] = '0'
        else:
            reply['error'] = '1'

        return HttpResponse(json.dumps(reply), mimetype="application/javascript")
    else:
        return Error()

2 个答案:

答案 0 :(得分:0)

尝试在执行其他操作之前提取数据:

Bundle data = intent.getExtras();
        if (data != null) {
            data.isEmpty(); toString();
        }

现在你可以使用toString();并查看数据包含的内容:

Log.i("C2DM", data.toString());

检查C2DM的日志并粘贴你得到的内容。

答案 1 :(得分:0)

似乎所有东西都设置正确。在我看来,消息永远不会首先发送到您的服务器。由于您可以检索来自但不是消息,这可能是正确的。

在服务器中,您可以更改以下行;

values['data.message'] = message

到此;

values['data.message'] = "testMessage"

我认为这很可能会导致你在android中收到消息。只是暂时更改消息以查看推送是否正常工作..