如何在后台保持iphone ios xmpp连接活着?

时间:2011-11-24 18:11:44

标签: iphone ios background connection xmpp

适用于iPhone的XMPPFramework非常强大。我已经启动并运行了,但是如何在后台保持连接活动超过10分钟?我将非常感谢有关如何实现这一目标的更多文档/方法。

因此用例很简单和常见:Joe在线并且在iPhone聊天应用程序中。他离开聊天应用程序,去Safari,玩游戏,流媒体电影,并做其他东西3小时(或更多)。 Joe希望在此期间继续接收消息。

示例应用程序允许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.
    }];
}}

1 个答案:

答案 0 :(得分:3)

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

除非您添加其中一个标记,否则后台将无效。另外,添加标签 将允许您保持连接,但如果您要提交到App Store,则实际标记必须有效。如果没有真正的用例,Apple将拒绝该应用程序。

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