Google Cloud Messaging 将在 7 天后过期

Posted

技术标签:

【中文标题】Google Cloud Messaging 将在 7 天后过期【英文标题】:Google Cloud Messaging expires after 7 days 【发布时间】:2015-02-09 07:52:05 【问题描述】:

我在我的 android 应用程序中使用 GCM。我的应用完全基于 GCM。我实现了客户端和服务器端并且工作正常。我在谷歌服务器注册到期时遇到问题。我注册成功,但它只注册接下来的 7 天。我已经尝试过这个 `GCMRegistrar.setRegisteredOnServer(_context, true);

                    final long DEFAULT_ON_SERVER_LIFESPAN_MS =
                            1000 * 3600 * 24 * 365;
                    GCMRegistrar.setRegisterOnServerLifespan(_context, DEFAULT_ON_SERVER_LIFESPAN_MS);` 

但它仍在注册 7 天的密钥。我知道如果我们更改版本代码谷歌服务器可能会更改 GCM 密钥,但现在我没有更改此版本代码。知道我应该怎么做才能克服这个过期问题。

【问题讨论】:

我发现了一个类似的问题,也许这可以帮助:) Link 【参考方案1】:

查看 GCMRegistrar 类后,我看到了这个函数实现

public static void setRegisteredOnServer(Context context, boolean flag)

SharedPreferences prefs = getGCMPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("onServer", flag);

long lifespan = getRegisterOnServerLifespan(context);
long expirationTime = System.currentTimeMillis() + lifespan;
Log.v("GCMRegistrar", "Setting registeredOnServer status as " + flag + " until " + new Timestamp(expirationTime));

editor.putLong("onServerExpirationTime", expirationTime);
editor.commit();

他们在获得生命周期后在此函数中设置过期时间。我犯了一个错误,我在调用这个函数之后设置了生命周期,所以它在 GCMRegistrar 类中设置了默认的生命周期,即 7 天。所以我需要先根据需要设置寿命,然后调用setRegisterOnServer函数。现在它过期了我在setRegisterOnServerLifespan(context, lifespan) 中设置的 GCM 密钥。

【讨论】:

以上是关于Google Cloud Messaging 将在 7 天后过期的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Messaging VS Google Cloud Platform

GCM(Google Cloud Messaging)推送完全解析

Google Cloud Messaging Bridging Header 导入失败

GCM(Google Cloud Messaging)是不是需要 Google 帐户?

Google-Cloud-Messaging服务的可靠性

Google Cloud Messaging:iOS App 在后台时不会收到警报