4

サーバーアプリとしてpythonを使用して、メッセージをGCMサーバーに送信し、登録されたAndroidデバイスで受信します。メッセージ ID を持つ GCM サーバーから成功しています。

Android モバイルでは、arg1in onMessage()function でデータを受信して​​いますがarg1from&には 2 つのキーしかありませんcollapse_key

以下のJavaコードでは、fromkey にはLongInt値 & messageis が含まれていますnull

JavaコードまたはPythonコードに欠けているものを誰か教えてもらえますか?

ここに私のJavaコードがあります:

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

2 に答える 2

0

何か他のことをする前に、データを抽出してみてください。

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

toString(); を使用できるようになりました。データの内容を確認します。

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

C2DM のログを確認し、取得したものを貼り付けます。

于 2012-08-21T07:23:10.377 に答える
0

すべてが正しく設定されているようです。そもそもメッセージがサーバーに送信されないように思えます。from は取得できますが、メッセージは取得できないため、これはおそらく正しいでしょう。

サーバーで、次の行を変更できますか。

values['data.message'] = message

これに;

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

これにより、Androidでメッセージが表示される可能性が最も高いと思います..メッセージを一時的に変更して、最初にプッシュが機能しているかどうかを確認してください..

于 2012-08-25T19:36:25.843 に答える