【问题标题】:How get pusher events when the iOS app go to the background?当iOS应用程序进入后台时如何获取推送事件?
【发布时间】:2014-07-08 20:57:55
【问题描述】:

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

我有这个:

@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实现了代码

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

【问题讨论】:

    标签: ios7 background pusher


    【解决方案1】:

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

    不幸的是,在后台使用 Pusher 是不可能的,也不是它的设计目的。 Pusher 非常适合在您的应用程序运行时实时接收事件,但要获取后台通知,您确实需要考虑使用 Apple 推送通知或时段获取,具体取决于您喜欢推送还是拉取。

    我的建议是:

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

    【讨论】:

    • 有没有办法让用户在后台保持“在线”?我们是否应该在一段时间内 ping 我们的服务器以让后端知道我们在线?也许让用户在后台保持在线并不是一个好主意
    猜你喜欢
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 2013-01-30
    相关资源
    最近更新 更多