根据GCM文档,有两个GCM限制。其一是设备离线时,GCM服务器最多可以保持100条消息;另一个限制是每个SENDER_ID PER DEVICE只能有最多4个折叠键。
在我们的使用场景中,单个设备上安装了5个或更多不同的应用程序(每个都是APK文件),并且每个应用程序独立注册并获取GCM注册ID(尽管在服务器端只有一个Google项目,仍使用相同的SENDER_ID)。那么每个应用程序是否都有自己的100/4定额,还是所有5个应用程序共享同一个100/4定额?
如果所有5个应用程序共享同一个100/4定额,则非常可能在手机恢复在线状态后,其中一个或多个应用程序将无法接收任何排队的GCM消息。当GCM服务器上排队超过100条消息(因此全部删除,只留下一条特殊的“您需要执行完整同步”的消息,那么哪个应用程序可以收到?)或4个折叠键的限制杀死第五个可折叠的消息时,出现这种情况。
在我们的使用场景中,单个设备上安装了5个或更多不同的应用程序(每个都是APK文件),并且每个应用程序独立注册并获取GCM注册ID(尽管在服务器端只有一个Google项目,仍使用相同的SENDER_ID)。那么每个应用程序是否都有自己的100/4定额,还是所有5个应用程序共享同一个100/4定额?
如果所有5个应用程序共享同一个100/4定额,则非常可能在手机恢复在线状态后,其中一个或多个应用程序将无法接收任何排队的GCM消息。当GCM服务器上排队超过100条消息(因此全部删除,只留下一条特殊的“您需要执行完整同步”的消息,那么哪个应用程序可以收到?)或4个折叠键的限制杀死第五个可折叠的消息时,出现这种情况。