我一直在为Android编码,现在我正在寻求将我的知识扩展到iOS开发;所以我对此非常陌生,请耐心等待。
据我所知,只有一小部分应用程序可以在后台无限期运行。这些是VoIP,音乐播放器和位置跟踪应用程序。
我想使用XMPP框架编写聊天应用程序。一切都很好,直到用户将应用程序放在后台,在这种情况下,应用程序将保持连接大约十分钟,然后被系统杀死,因此用户无法接收新消息。
我知道黑客可以让应用程序保持活力。黑客,比如将它定义为info.plist文件中的音乐播放应用,然后无限播放一些空音。但是我也意识到Apple会在应用程序发布到App Store时拒绝该应用程序。
那么,通常,其他应用程序如何做到这一点?其他聊天应用程序如何在后台保持活动以从服务器接收新消息? Google Hangouts,IM +等应用程序?
答案 0 :(得分:3)
我认为大多数这些应用都使用推送通知,只需在应用程序打开后立即从服务器加载最后的消息。
答案 1 :(得分:3)
iOS操作系统允许存在名为 PUSH NOTIFICATION
的内容在线存在数百个教程,教您如何实现通知代码以及如何在收到此类消息时做出相应的响应! http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
查看此链接,获取有关推送通知的深入教程! http://maniacdev.com/2011/05/tutorial-ios-push-notification-services-for-beginners
答案 2 :(得分:2)
理想情况下,它们并非真正在后台运行,而是使用推送通知,正如其他人所提到的那样。
但是有些聊天客户似乎做了其他事情:我已经验证(通过嗅探闲置的iOS设备的流量)至少谷歌环聊,Facebook和Skype都保持在后台打开持久套接字,并定期发送让它保持活力的交通。
我怀疑他们正在使用Apple的例外情况来解决Apple严格的后台执行政策。 iOS允许“VoIP应用程序”在后台运行并保持一个套接字打开,以通知有关来电和消息。
也许他们也在使用iOS 7的新“后台获取”功能,但据我所知,这不允许持久的套接字连接。
答案 3 :(得分:1)
虽然存在一些黑客攻击,并且你的应用程序可以在后台进行更多时间请求(达到一定程度,并且无法保证),这是推送通知的完美应用程序。
服务器告诉手机有消息,iOS会唤醒你的应用程序来处理它。
答案 4 :(得分:1)
从iOS 7开始,有一种新的后台执行模式 - 需要定期获取新数据的应用程序的“获取”。听起来你的情况符合这个定义。
您可以在iOS App Programming Guide -
中找到相关信息定期获取少量内容
在iOS 7及更高版本中,一款定期从中检索内容的应用 网络可以要求系统检查后台执行时间 新内容。您可以从中启用对后台提取的支持 Xcode中“功能”选项卡的“背景模式”部分 项目。 (您也可以通过添加支持来启用此支持 UIBackgroundModes键与应用程序的Info.plist中的获取值 文件。)在适当的时候,系统给出后台执行 时间到支持此后台模式的应用程序,启动应用程序 如果需要,直接进入后台。 app对象调用 其应用的
application:performFetchWithCompletionHandler:
方法 委托让你知道什么时候有执行时间。
您也可以使用推送通知,但这需要一些服务器基础架构
答案 5 :(得分:0)
在后台运行的应用程序功能有限。彻底阅读应用程序状态和多任务处理,以确定如何最好地设计您的应用程序。聊天未列为可以使用更宽松的策略操作的特定例外之一。你将永远无法让[你的]应用程序永远存在于后台。"您也许可以利用本指南中描述的iOS 7功能,定期获取少量内容。
iOS应用程序编程指南:应用程序状态和多任务处理 https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOS ProgrammingGuide / ManagingYourApplicationsFlow / ManagingYourApplicationsFlow.html