当iOS应用程序进入后台时,如何获取推送事件?

时间:2014-07-08 20:57:56

标签: ios7 background pusher

我需要从推送器获取触发的eventos,当应用程序进入后台时我不会得到它们(只有第一个)。

我有这个:

@property(strong, nonatomic) PTPusherPresenceChannel *taxi_channel;

PTPusherPresenceChannel *taxi = [PusherController sharedApp].taxi_channel;

- (void)viewDidLoad

@weakify(self);

[taxi bindToEventNamed:@"client-driver-cancel-service" handleWithBlock:^(PTPusherEvent *event)
 {
     DDLogDebug(@"%@: %@", event.name, event.data);
     @strongify(self);

     [self cancelServiceAcepted];
 }];

问题是我在进入后台时会遇到一个事件,但在第一次事件发生之后我就不再使用它了。

我已在https://github.com/pusher/pusher-test-iOS/blob/master/Diagnostics/Code/ClientDisconnectionHandler.h

实施了代码

如果应用程序走到前台,它可以正常工作。

1 个答案:

答案 0 :(得分:5)

我是libPusher的作者。我在Github上回答了你的问题,但我想我会在这里发布,因为它可能对其他人有帮助。

不幸的是,它不可能在背景中使用Pusher而不是它的设计目的。 Pusher非常适合在您的应用运行时实时接收事件但是为了获取背景通知,您确实需要使用Apple推送通知或周期提取,具体取决于您是否更喜欢推或拉。

我的建议是:

  • 在应用程序位于前台时使用Pusher接收实时更新
  • 使用推送通知在您的应用处于后台时向您的应用发送重要事件(这些应该不那么频繁)和/或
  • 可能使用后台提取从服务器提取最新的更改/事件
  • 当您的应用程序在前台恢复时,重新开始侦听来自Pusher的事件