Gil*_*Gil 12 sdk android google-cloud-messaging
我正在编写和Android SDK,它应该从SDK服务器端接收GCM推送消息.成功推送消息发送几个小时后,GCM服务器返回NotRegistered错误:
{
"multicast_id":6205350692941230304,
"success":0,
"failure":1,
"canonical_ids":0,
"results":
[
{
"error":"NotRegistered"
}
]
}
Run Code Online (Sandbox Code Playgroud)
将registrationId在客户端并没有改变,而在服务器端与该令牌更新.
我该如何解决这个registrationId问题?有两个听众 - 一个在SDK中,一个在应用程序中 - 一个问题?
我的Android SDK regId在初始化时注册GCM ,并将该id发送到支持SDK的服务器.
拥抱应用程序可能(通常会)注册regId自己的GCM .另一个regId可能被发送到拥抱应用程序的服务器.
该senderIdSDK和应用程序的不同.
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> ...
<receiver
android:name="com.xxxx.xxxxx.xxxxx"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
protected String doInBackground(Void... params) {
String msg = "";
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(mContext);
}
regid = gcm.register(SENDER_ID);
msg = "Device registered, registration ID=" + regid;
storeRegistrationId(mContext, regid);
listener.onGCMRegisterFinish(regid);
}
catch (IOException ex)
{
msg = "Error :" + ex.getMessage();
}
return msg;
}
Run Code Online (Sandbox Code Playgroud)
此代码regId从GCM服务器获取并将其发送到我们的后端服务器.它在SDK初始化时执行,regId每次应用程序从后台返回时都会发送.
unregister() 不会从服务器端或客户端调用2015-08-02 12:31:22,383 INFO - request_2145354041215926507
update push token for user: XXXXXXXX,
push_token: ...me1GttmSRipnWsCGVUueK7e0nk
Run Code Online (Sandbox Code Playgroud)
添加包含您的包名称的类别 intent-filter
<receiver
android:name=".xxxxx"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.xxxx" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3077 次 |
| 最近记录: |