gpt4 book ai didi

ios - 当应用程序进入后台状态 iOS 8 时,Pubnub 连接停止

转载 作者:可可西里 更新时间:2023-11-01 06:06:40 25 4
gpt4 key购买 nike

标题说明了一切。我看过这个question还有here在 pubnub 论坛上(同样的问题,只是不同的建议)。

问题的核心在于,一旦应用程序挂起,pubnub 连接就会排队,直到应用程序返回前台后才会发送。发送一条通知说您将进入 channel 的后台似乎是一件合理的事情,但它不起作用。

根据我的阅读,我了解到 pubnub 使用 websockets 并且在后台模式下是不允许的。甚至尝试启用 VOIP 作为后台模式,但没有成功,但位置更新 bg 模式有效。但是,由于我不使用定位服务,因此使用它会导致我的应用被拒绝。

运行这段代码时

- (void)applicationDidEnterBackground:(UIApplication *)application {

[PubNub sendMessage:@"Hello from PubNub iOS!" toChannel:self.myChannel;
}

我从 pubnub 获得这个日志条目(所以至少我知道命令已运行):

Looks like the client suspended"; Fix suggestion="Make sure that your application is configured to run persistently in background

这一天我一直在自杀。有一天,你开始做一些你认为很简单的事情,一件 15 分钟的事情,结果变成了沮丧的一天......你明白我的意思:)

最佳答案

当应用程序即将进入后台时,我实际上能够发送我需要的消息。并且不启用任何后台模式。

我利用了背景有限任务,正如所解释的那样 tutorial .

- (void)applicationWillResignActive:(UIApplication *)application {

[PubNub updateClientState:@"MyID" state:@{@"appState":@"Background",@"userNickname":@"MyNickname"} forObject:[PNChannel channelWithName:@"MyChannel"]];

self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"Background handler called. Not running background tasks anymore.");
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
self.backgroundTask = UIBackgroundTaskInvalid;
}];

}

并在重新上线时实现停止后台

- (void)applicationDidBecomeActive:(UIApplication *)application {

if (self.backgroundTask != UIBackgroundTaskInvalid)
{
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
self.backgroundTask = UIBackgroundTaskInvalid;
NSLog(@"Task invalidated");
}
}

关于ios - 当应用程序进入后台状态 iOS 8 时,Pubnub 连接停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27333467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com