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 导入失败