Here is a sample crash log
代码基本上如下所示:
UIApplication *app = [UIApplication sharedApplication];__block uibackgroundtaskIDentifIEr bgTaskID = 0;bgTaskID = [app beginBackgroundTaskWithExpirationHandler:^{ NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 1 * 60.0 target: self selector: @selector(onTick) userInfo: nil repeats: YES]; [t fire]; if (bgTaskID != uibackgroundtaskInvalID){ [app endBackgroundTask: bgTaskID]; bgTaskID = uibackgroundtaskInvalID; }}];
我正在使用GcdasyncSockets进行连接,每次调用的超时时间约为30秒.
我真的没有想法,崩溃发生的原因可能是什么?
解决方法 您的计时器可能在任务失效后启动(在[UIApplication sharedApplication]之后.backgroundTimeRemaining变为0).问题是你不能让应用程序在后台持续运行.如果您希望每隔一段时间执行一次代码,您唯一的选择就是使用后台位置API,设置您的应用在其pList中使用位置背景模式.
您将获得CLLocationManagerDelegate回调,并且在调用这些方法时您有时间做一些工作.
有关后台模式,请参阅Apple文档:http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html
和位置 – awarness手册:http://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/LocationAwarenessPG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009497
总结以上是内存溢出为你收集整理的基于位置跟踪的iOS全天候后台服务全部内容,希望文章能够帮你解决基于位置跟踪的iOS全天候后台服务所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)