我正在使用 Google Cloud Messaging 在我的Android应用程序中实现推送通知。 在大多数设备上一切都运行良好,但是当我在三星Galaxy S Dous GT-S7562(Android 4.0.4,API 15)上测试应用程序时,当我发送通知时,它并没有t调用 onMessageReceived()方法。
由于一切在其他设备上正常运行,我非常确定我的代码的功能。 我使用以下代码检查 GooglePlayServices 的可用性,并返回 true :
private boolean checkPlayServices() {
GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
int resultCode = apiAvailability.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (apiAvailability.isUserResolvableError(resultCode)) {
apiAvailability.getErrorDialog(this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST)
.show();
} else {
Log.i(TAG, "This device is not supported.");
finish();
}
return false;
}
return true;
}
虽然 RegistrationIntentService()会将设备的令牌发送到我的服务器,并且还会通过我的服务器响应" 成功"进行GCM调用,应用程序没有调用 onMessageRecieved()方法,因为我将日志放在它的开头。
我还有什么需要检查来调试问题吗?
我感谢你的帮助。
答案 0 :(得分:0)
检查脚本是否包含有效负载中的通知
请参阅以下链接
https://developers.google.com/cloud-messaging/concept-options#notifications_and_data_messages
答案 1 :(得分:0)
这是一个具体案例。首先,需要检查此链接后的注册令牌。 通过curl检查注册令牌:请参阅此link。
# api_key=YOUR_API_KEY
# curl --header "Authorization: key=$api_key" \
--header Content-Type:"application/json" \
https://gcm-http.googleapis.com/gcm/send \
-d "{\"registration_ids\":[\"ABC\"]}"
“如果您想确认注册令牌的有效性,您可以通过更换" ABC"使用注册令牌。“
我认为在检查卷曲结果后调查更好。 您也可以参考此site。
此外,最好检查设备的通知设置。
我希望这会有所帮助。