将pubnub订阅保留为最佳服务

时间:2016-01-28 01:52:12

标签: android pubnub

我可以选择使用GCM进行推送通知,但我决定在后台运行正在运行的服务中保留pubnub订阅。

这是一个聊天界面,每个用户在后台打开自己的频道,只在聊天屏幕打开时发布到目标频道。

这有什么缺点,如果这不是最佳方式,我该怎么做才能优化它?

1 个答案:

答案 0 :(得分:4)

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,但以下是重点:

  1. 用户可以在设置>中手动配置白名单。电池>电池优化

  2. 持有REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限的应用可以触发系统对话框,让用户直接将应用添加到白名单,而无需进行设置。该应用程序触发ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Intent以触发对话框。这是一个正常的权限:请求它的应用程序将始终被授予权限,而无需用户批准或查看。

  3. 拥有REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限的应用可以触发系统对话框,让用户直接将应用添加到白名单,而无需进行设置。该应用程序触发ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Intent以触发对话框。这是一个正常的权限:请求它的应用程序将始终被授予权限,而无需用户批准或查看它。注意:某些博客已经报道过,应用程序已从Google Play商店中删除,并在尝试执行此操作时受到详细审查。

  4. PARTIAL_WAKE_LOCK需要在后台接收所有Android版本的邮件,以防止设备打瞌睡