android – 在最佳服务中保持pubnub订阅打开
作者:互联网
我可以选择使用GCM进行推送通知,但我决定在后台运行正在运行的服务中保留pubnub订阅.
这是一个聊天界面,每个用户在后台打开自己的频道,只在聊天屏幕打开时发布到目标频道.
有什么缺点,如果这不是最佳方式,我该怎么做才能优化它?
解决方法:
PubNub Android后台服务与GCM
由于感知到后台服务的电池使用情况,使用GCM对于最终用户来说可能是更可接受的方式.使用PubNub,您只需publish the message including the GCM push payload,设备将在应用处于活动状态时接收实时消息,并在应用未激活(或未运行)时接收推送通知.
但也许您需要在后台保持与PubNub的连接.现在您必须决定是否want this service to be started when the device is powered on(即使应用程序永远不会启动)或仅在首次启动应用程序时启动服务.无论哪种方式,read up on Android Services.我认为你(@olayinka)知道这一点,但只是把这个放在更广泛的读者阅读这篇文章.
使用Android 6(而不是5),您必须通知最终用户您正在启动服务以在后台运行,并且用户必须允许它.解决这个问题的唯一方法是将应用程序列入白名单.
打盹模式&应用白名单
将应用程序列入白名单有三种方法,所有这些方法都需要用户交互.您可以阅读full docs about doze mode and app whitelisting,但以下是重点:
>用户可以在设置>中手动配置白名单.电池>电池优化.
>拥有REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限的应用可以触发系统对话框,让用户直接将应用添加到白名单,而无需进行设置.该应用程序触发ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Intent以触发对话框.这是一个正常的权限:请求它的应用程序将始终被授予权限,而无需用户批准或查看它.
>拥有REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限的应用可以触发系统对话框,让用户直接将应用添加到白名单,而无需进行设置.该应用程序触发ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Intent以触发对话框.这是一个正常的权限:请求它的应用程序将始终被授予权限,而无需用户批准或查看它.注意:在某些博客中已经报告过,应用程序已从Google Play商店中删除,并在尝试执行此操作时受到详细审查.
> PARTIAL_WAKE_LOCK需要在后台接收所有Android版本的消息,以防止设备打瞌睡.
标签:android,pubnub 来源: https://codeday.me/bug/20190623/1270473.html