iPhone的XMPPFramework功能强大。我已经启动并运行它,但是如何在后台将连接保持 Activity 状态超过10分钟?我希望获得更多有关如何完成此操作的文档/方法。

因此,用例很简单且常见:Joe处于在线状态并且在iPhone聊天应用程序中。他离开了聊天应用程序并转到Safari,玩了游戏,播放了电影,并做了3个小时(或更长时间)的其他工作。乔希望在此期间继续接收消息。

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

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

- (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.
    }];
}}

最佳答案

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

除非添加这些标签之一,否则后台将无法工作。另外,添加标签
将允许您保持连接状态,但是如果您要提交到App Store,则实际标签必须有效。如果没有实际用例,Apple将拒绝该应用程序。

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

关于iphone - 如何在后台保持iphone ios xmpp连接活跃?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6223768/

10-14 22:43
查看更多