我的问题是,如果客户端设备在有限的时间内没有互联网连接,那么 GCM 推送通知请求是否会添加到队列中或进行其他操作?如果是,请求多久才会被丢弃?
答案1
因此,在官方指导如何使用 GCM 说:
设置消息的生存期
GCM 通常会在发送消息后立即传送消息。但是,这并不总是可行的。例如,如果平台是 Android,则设备可能已关闭、离线或因其他原因不可用。或者发送者本身可能会请求在设备激活之前不传送消息,方法是使用空闲时延迟标志。最后,GCM 可能会故意延迟消息,以防止应用程序消耗过多的资源并对电池寿命产生负面影响。
发生这种情况时,GCM 将存储该消息并在可行的情况下尽快发送。虽然在大多数情况下这样做没有问题,但对于某些应用程序来说,迟到的消息可能永远不会被发送。例如,如果该消息是来电或视频聊天通知,则在通话结束前的很短时间内它才有意义。或者,如果该消息是活动邀请,则在活动结束后收到该消息将毫无用处。
您可以使用存活时间发送请求中的参数用于指定消息的最大生存期。此参数的值必须是 0 到 2,419,200 秒之间的一个时长,它对应于 GCM 存储并尝试传递消息的最大时间段。不包含此字段的请求默认最长期限为 4 周。