我目前正在使用GCM从Android应用程序推送adn get数据,但是我发现GCM注册过程非常不可靠,几乎是我得到空注册ID的1/7。
所以问题是如何保证获得GCM注册ID。
public String RegisID() {
context = getActivity().getApplicationContext();
gcm = GoogleCloudMessaging.getInstance(getActivity());
String msg = "";
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(context);
}
regid = gcm.register(SENDER_ID);
Log.d("111", msg);
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
}
return regid;
}
答案 0 :(得分:0)
查看Android GCM delivery monitoring问题。基本上答案的要点是谷歌不保证交付,但他们会尝试几周来传递消息,具体取决于您在消息中设置的持续时间。
如果您确实要确认邮件是否已发送,请在推送消息本身中使用推送ID。从服务器发送消息时,存储与该推送ID对应的时间戳。当用户收到推送消息时,将消息发送回您的服务器(使用推送ID和其他一些参数),说明已收到具有该特定推送ID的推送消息。
在服务器端跟踪时间戳。如果推送消息的时间戳与当前时间之间的差异超过设置的限制,请再次从服务器发送该特定消息。这是一个忙碌的方法!
希望它能给你一些想法。