GCM-сервер Google, ответивший нулевым сообщением

Я следую этой ссылке, но после отправки сообщения в GCM API мой Android получает пустое сообщение (значение установлено равным null ).

Это мой Django View, отправляющий сообщение в GCM API:

 @csrf_exempt def send_notification(request): message = {"name": "Kousik","email": "kousik.tict@gmail.com"} registration_ids = ['xxxxxxxxxxxxxxx','xxxxxxxxxxxxxxxxxx'] post_data = {"data":message,"registration_ids":registration_ids} headers = {'Content-Type': 'application/json', 'Authorization':'key=xxxxxxxxx'} import requests post_response = requests.post(url='https://android.googleapis.com/gcm/send', data=simplejson.dumps(post_data), headers=headers) to_json = {'status':str(post_response)} return HttpResponse(simplejson.dumps(to_json), mimetype='application/json') 

Однако в отчете о трафике нет сообщений, отправляемых вообще:

Введите описание изображения здесь

Код Android получает сообщение GCM:

 static final String EXTRA_MESSAGE = "message"; private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); for(String key: bundle.keySet()){ Log.d("gen", key+" - "+bundle.get(key)); } String newMessage = intent.getExtras().getString(EXTRA_MESSAGE); //newMessage comming NULL // Waking up mobile if it is sleeping WakeLocker.acquire(getApplicationContext()); // Showing received message lblMessage.append(newMessage + "\n"); Toast.makeText(getApplicationContext(), "New Message: " + newMessage, Toast.LENGTH_LONG).show(); // Releasing wake lock WakeLocker.release(); } }; 

Я поставил точку перерыва здесь, и я получил следующее:

Введите описание изображения здесь

Обратите внимание на значение message в hashmap, оно равно null .

Вот некоторые вещи, которые я могу сказать:

  1. Консоль API Google API не показывает статистику GCM, покажите, что вы не должны ничего видеть.

  2. Ваш сервер не отправляет ключ message (он отправляет только name и email , поэтому я не знаю, что такое ключ message который является нулевым в скриншоте отладчика.

  3. Я не понимаю эту строку:

private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver()

Вам не нужно создавать экземпляр BroadcastReceiver, который получает сообщения от GCM. Вы должны объявить его в своем манифесте, как показано во многих учебниках (в том числе в официальном руководстве по программированию GCM).

Я предполагаю, что вы вызываете BroadcastReceiver локально в своем приложении, а сообщение, отправляемое с вашего сервера, не доходит до приложения.

Вы должны включить ответ, который ваш сервер получает от Google в вашем вопросе, так что мы можем быть уверены, что проблема не на вашей стороне сервера. Вы также должны включить свой манифест.

Это не совсем ответ, но слишком длинный комментарий, и я думаю, он может указать вам на решение вашей проблемы.