适用于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.
}];
}}
答案 0 :(得分:3)
10分钟是iOS允许您保持连接的大致时间。您可以
还要看[app beginBackgroundTaskWithExpirationHandler]
,这将允许你
请求更多时间完成任务。为了保持100%连接,你会
需要为info.plist(即UIBackgroundModes)添加voip,音频或位置标签。
除非您添加其中一个标记,否则后台将无效。另外,添加标签 将允许您保持连接,但如果您要提交到App Store,则实际标记必须有效。如果没有真正的用例,Apple将拒绝该应用程序。
要在没有标记的情况下保持更长时间连接,您需要使用某种类型的服务器,该服务器维护连接,然后使用推送通知来传递消息。