如何在后台保持 iphone ios xmpp 连接处于活动状态?

2024-04-21

iPhone 的 XMPPFramework 功能强大。我已经启动并运行了它,但是如何在后台保持连接 10 分钟以上?我希望获得更多有关如何实现此目标的文档/操作方法。

因此,用例非常简单且常见:Joe 在线并且正在使用 iPhone 聊天应用程序。他离开聊天应用程序,转到 Safari,玩游戏,观看电影,并做其他事情 3 小时(或更长时间)。乔希望在那段时间继续接收消息。

示例应用程序允许 Joe 在后台接收本地通知,但似乎只有 10 分钟。这是相关的代码(我认为)。谢谢!

为了帮助其他人,甚至为了达到这一点,您需要将 xmppstream 属性enableBackgroundingSocket设置为YES(它已在您应该复制的iphoneXMPP示例项目中为您完成)和appname-info.plist(即iosChat- info-plist) 文件中,您需要添加新的键/值对。您应该右键单击某处并“添加行”。您应该选择“所需背景模式”键,然后输入“voip”。按 Enter 后,Xcode 将检测到您的意思是“App 提供 IP 语音服务”。这让你有 10 分钟的时间让聊天应用程序在后台保持打开状态(我认为)。但我们想要无限期,我怀疑答案就在下面的方法中。我是否应该在这个方法或其他东西中“重新连接”,例如,[自连接](我有一个连接方法)?

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

DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);

if ([application respondsToSelector:@selector(setKeepAliveTimeout:handler:)]) 
{
    [application setKeepAliveTimeout:600 handler:^{

        DDLogVerbose(@"KeepAliveHandler");

        // Do other keep alive stuff here.
    }];
}}

iOS 允许您保持连接的大约时间为 10 分钟。你可以 还看看[app beginBackgroundTaskWithExpirationHandler],这将让你 请求更多时间来完成任务。为了保持 100% 连接,您将 需要向 info.plist 添加 voip、音频或位置标签(即 UIBackgroundModes)。

除非您添加这些标签之一,否则背景将不起作用。另外,添加一个标签 将允许您保持连接,但如果您要提交到 App Store,则实际标签必须有效。如果没有真正的用例,苹果将拒绝该应用程序。

要在没有标签的情况下保持更长时间的连接,您将需要使用某种类型的服务器来维护连接,然后使用推送通知来传递消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在后台保持 iphone ios xmpp 连接处于活动状态? 的相关文章

随机推荐