CGM RegistrationID的可靠性如何

时间:2014-01-31 23:41:13

标签: android google-cloud-messaging

我目前正在使用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;

        }

1 个答案:

答案 0 :(得分:0)

查看Android GCM delivery monitoring问题。基本上答案的要点是谷歌不保证交付,但他们会尝试几周来传递消息,具体取决于您在消息中设置的持续时间。

如果您确实要确认邮件是否已发送,请在推送消息本身中使用推送ID。从服务器发送消息时,存储与该推送ID对应的时间戳。当用户收到推送消息时,将消息发送回您的服务器(使用推送ID和其他一些参数),说明已收到具有该特定推送ID的推送消息。

在服务器端跟踪时间戳。如果推送消息的时间戳与当前时间之间的差异超过设置的限制,请再次从服务器发送该特定消息。这是一个忙碌的方法!

希望它能给你一些想法。