有时,当我在Android应用中收到普通优先级GCM消息时,网络似乎无法使用。普通优先级GCM消息是否会自动向Android M的新Doze and App Standby睡眠条件授予应用临时豁免(即限制网络访问)?
完整背景: 我在Android-M发布之前实现了一个应用程序,该应用程序使用GCM消息传递来安装应用程序实例以按需下载更新。这是一次best practice轮询更新。
Android-M引入了Doze和AppStandby,当应用程序未使用new high-priority消息类型时,它似乎能够限制网络访问。
我应该将这些tickle消息切换为高优先级,还是在收到普通优先级消息时可以进行网络访问?我对Android M Previews的测试似乎表明网络有时不可用。
答案 0 :(得分:1)
网络访问可能无法使用,您不应将消息类型切换为高优先级,以确保网络访问可用。如果GCM消息对该设备上的用户是迫切需要的,则只应切换消息类型。一般规则是,在考虑围绕creating notifications的指导时,通知将属于HIGH类别。如果您当前使用相同的GCM消息进行定期同步请求以及紧急消息,则应将它们分开。
关于“网络访问可能可用”的更多细节:
自October 1st起,最新版本的Google Play服务将GCM正常优先级消息的传送与Doze的维护模式相关联,因此网络通常不会受到限制。提出这个问题的开发人员应该考虑一个强大的应用程序通常会同时处理Doze和实际网络连接问题。该应用通常会:
网络调度例程:
注意:使用设备测试时,包括使用Android M预览的设备,请确保在测试之前Google Play服务是完全最新的(v8.1 +)。这通常需要打开Google Play商店应用并接受服务条款。