4

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

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

在下面的 Java 代码中,fromkey 包含一个LongInt值 & messageis null

谁能告诉我我在 Java 代码或 Python 代码中缺少什么?

这是我的 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");
}

蟒蛇代码:

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()
4

2 回答 2

0

一切似乎都设置正确。在我看来,该消息从未首先发送到您的服务器。由于您可以检索 from 但不是消息,这可能是正确的。

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

values['data.message'] = message

对此;

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

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

于 2012-08-25T19:36:25.843 回答
0

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

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

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

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

检查 C2DM 的日志并粘贴您获得的内容。

于 2012-08-21T07:23:10.377 回答