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

mam*_*mcx 1 background pusher ios7

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

我有这个:

@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];
 }];
Run Code Online (Sandbox Code Playgroud)

问题是我在进入后台时会遇到一个事件,但是在第一次事件发生之后我就再也没有了.

我已经在https://github.com/pusher/pusher-test-iOS/blob/master/Diagnostics/Code/ClientDisconnectionHandler.h上实现了代码.

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

Luk*_*ath 5

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

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

我的建议是:

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