我正在使用 python 作为服务器应用程序将我的消息发送到 GCM 服务器以在注册的 android 设备上接收。我从具有消息 ID 的 GCM 服务器获得成功。
在 android 移动设备上,我在 onMessage()
函数中的 arg1
中接收数据,但在 arg1
中只有两个键,来自
& collapse_key
。
在下面的 Java 代码中,from
键包含一个 LongInt
值和 message
是 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");
}
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()
最佳答案
尝试在执行其他操作之前提取数据:
Bundle data = intent.getExtras();
if (data != null) {
data.isEmpty(); toString();
}
现在你可以使用 toString();并查看数据包含的内容:
Log.i("C2DM", data.toString());
检查 C2DM 的日志并粘贴您得到的内容。
关于android - 我无法通过谷歌云消息在我的 Android 设备上接收消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12036734/