2012-08-20 3 views
4

J'utilise python comme application serveur pour envoyer mon message à GCM Server pour recevoir sur un appareil Android enregistré. Je reçois un succès du serveur GCM avec l'ID de message.Je ne peux pas recevoir mon message sur mon appareil Android via la messagerie google cloud?

Sur mobile Android Je reçois des données dans arg1 en fonction onMessage() mais avec seulement deux touches arg1, de & collapse_key.

En dessous du code Java, de clé contient une LongInt valeur & un message est null.

Quelqu'un peut-il me dire ce qu'il me manque dans le code Java ou dans le code Python.?

Voici mon 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"); 
} 

code 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() 
+0

Quelle réponse HTTP que vous obtenez lorsque envoyer des messages? –

+0

Je reçois 200 OK avec la réponse en texte brut contenant ID. par exemple. "id = 0: 1345461917515289% ebf0d4f3f9fd7ecd" – MicroEyes

+1

Bon, cela signifie que le message a été envoyé correctement. Avez-vous déjà utilisé la méthode onMessage? :) Pouvons-nous voir la classe du récepteur entier et android manifeste xml pls –

Répondre

0

Essayez d'extraire les données avant de faire quelque chose d'autre:

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

Maintenant, vous pouvez utiliser toString(); et voir ce que les données contiennent:

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

vérifier le journal de C2DM et coller ce que vous obtenez.

0

Tout semble être configuré correctement. Il me semble que le message n'est jamais envoyé en premier lieu à votre serveur. Puisque vous pouvez récupérer le message from mais pas le message, c'est probablement correct.

Sur le serveur, pouvez-vous modifier la ligne suivante?

values['data.message'] = message 

à cela;

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

Je pense que cela conduira probablement à vous faire passer le message dans Android .. Il suffit de modifier temporairement le message pour voir si la poussée travaille pour commencer ..

Questions connexes