Google Cloud Messenging:它现在更可靠吗?获取GCM消息太慢

时间:2016-07-21 07:53:15

标签: android push-notification google-cloud-messaging

已编辑摘要

我对GCM感到有些沮丧,因为我正在关注Telegram和其他示例项目。我认为它应该是一种标准化的方法,但我不明白为什么只有我的应用程序接收GCM消息10-15分钟,而其他应用程序在选定的设备上同时推送消息。

我的目标很明确,我希望我的推送消息与其他应用程序同时到达(Not Whatsapp或Fb,因为他们拥有自己的云消息传递工具)。我想知道我错过了服务器端的任何重要代码或注册意向服务。

原始段落

推送服务对我的Android应用程序很重要,但我在选定的设备上遇到了我自己的应用程序的GCM可靠性问题。

我正在遵循Telegram用于设置GCM的方法。当我第一次注册应用程序时,GCM运行良好。但是,15-20分钟后我或关闭互联网连接。 GCM在某些设备上存在问题(4个设备用于测试,只有Nexus继续工作,而三星Galaxy S2,LG 4x和夏普无法工作)。但是,等待另外约20分钟后,其余设备会收到GCM消息。

有些人认为GCM 非常不可靠,但它是几年前写的。此外,电报似乎使用了GCM,但它在我的所有设备上运行良好。似乎我自己的代码存在问题。 https://eladnava.com/google-cloud-messaging-extremely-unreliable/

以下是如何注册推送和获取令牌的代码。请指出哪些部分我错了......

Regsitration https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/GcmRegistrationIntentService.java

@Override
protected void onHandleIntent(Intent intent) {
    try {
        InstanceID instanceID = InstanceID.getInstance(this);
        final String token =     instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
        FileLog.d("tmessages", "GCM Registration Token: " + token);
        AndroidUtilities.runOnUIThread(new Runnable() {
            @Override
            public void run() {
                ApplicationLoader.postInitApplication();
                sendRegistrationToServer(token); //send to my own server
            }
        });
    } catch (Exception e) { }

GcmInstanceIDListenerService https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/GcmInstanceIDListenerService.java

@Override
public void onTokenRefresh() {
   //I delete the original ID and get a new one
   //
}

GcmPushListenerService https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/GcmPushListenerService.java

@Override
public void onMessageReceived(String from, final Bundle bundle) {

}

0 个答案:

没有答案
相关问题