android上的pubnub的最佳实践

我正在使用pubnub作为Android应用程序和服务器之间的发布/订阅通道。 目前我正在考虑如何实现这一点。

我正在使用提供的android库( https://github.com/pubnub/pubnub-api/tree/master/android ),但我认为如果我像现在一样使用它会在应用程序生命周期中出现一些问题。 (如我错了请纠正我)

我当时正在考虑将其作为一项服务来实施

我想要的是

  • 在最后一次使用应用程序后,该服务必须继续运行一小时(可协商)。 这是因为我们希望在收到消息时收到通知,但该应用程序不是当前使用的应用程序。

  • 如何在应用程序非活动一小时后停止服务? 可能Android会杀了它,但我想要一些控制权。

  • 当特定消息进入时,服务必须能够触发应用程序更改其界面(当我收到pubnub消息时,我正考虑从服务发送意图?),pubnub将数据发送到服务,所以我需要一种方式将此数据传递给应用程序(可能将其保存在意图中的Bundle中?)

  • 我需要听多个pubnub频道(同时最多2个),我想我必须在这个服务的多个实例中这样做?

我想我会这样做:

  • 创建应用启动时启动的服务

  • 让服务收听pubnub频道

  • 当收到消息时,发送意图并使用意图filter

  • 实现broadcasthandlers来监听这些内部意图

这是正确的方法吗? 任何提示?

你有一个很好的问题,我将在这个答案中讨论一些详细的问题。 您正在使用Android,并且您对PubNub发布/订阅方案的约定和最佳实践感兴趣。

您的用例非常普遍,构建应用程序的最佳方式总是因应用程序需求而异。 但是你肯定有正确的想法并且已经提出了所有正确的问题。 您只需要一些示例代码和方向来开始实现应用程序需求的细节。 要在列表中定义您的需求:

  • 连接/断开连接能力。
  • 永远在线的后台服务,可以发送/接收数据并通过Android Intents通知其他应用程序。
  • 同时连接到多个PubNub通道。

因此,为了开始,我将为您提供一些示例和方法的直接链接:

  • 创建Android安卓时启动的服务: https : //github.com/pubnub/pubnub-api/blob/0dfd8028b803332f5641adc909b1a26f87bd7ff1/android/PubnubAndroid/src/com/aimx/androidpubnub/BootReceiver.java
  • 想要停止在PubNub频道上收听时取消订阅/断开示例代码: https : //github.com/pubnub/pubnub-api/blob/0dfd8028b803332f5641adc909b1a26f87bd7ff1/android/PubnubAndroid/src/com/aimx/androidpubnub/MainActivity.java -通过将阻塞的pubnub.Subscribe()方法放在Thread中,可以轻松地监听多个通道。

关于你的想法 – 这正确的方法:

  • 创建应用启动时启动的服务
  • 让服务收听PubNub频道。
  • 当收到消息时,发送意图并使用意图filter。
  • 实现BroadcastHandlers以侦听这些内部意图。