一般来说,苹果为了保持iphone的使用流畅,是不允许应用在后台持续开启的。应用退到后台后,在600s内会随机退出应用(也就是在内存吃紧的时候就会强制退出退到后台的应用),在600内是绝对会将后台应用退出的。如果想要应用退到后台一直运行,则需要做一些响应的设置。
我们知道:一般情况,只有项目开启了后台定位、后台播放音乐这两种方式,苹果才会允许我们应用在后台继续执行。
在上一篇的《IOS之定位浅谈》我们已经知道如何开启定位?如何让计时器在后台仍能计时的了。因为项目需求,我是每十秒获取一次定位的。所以每开启一次定位成功回调后就会马上停止定位。因此,就我的项目而言,会出现这样的一种情况(指应用在后台运行):当定位回调成功后,就会 [self.locationManager stopUpdatingLocation];而距离下一次定位start前,就已经先到600s了,这样程序就会被退出。举例:我在596s回调成功一次后就停止定位,那么下一次开始定位的时间是:606s,但在600s的时候应用在后台已经退出了。所以无效!
ps:当然不一定是600s才会这样,应用在后台运行时候,任何内存吃紧的时候,都会发生这样的情况。
如何解决这样的问题呢?前面说过,只要开启后台定位,应用在后台就可以无限制执行。很简单:只要再定义一个locationManager2,开启后,不要停止。locationManager2的作用就是让应用在后台一直执行。当然:如果你需要不是需要每十秒获取一次,也就不需要locationManager2了。
开启后台定位后,应用如何通过appstore的审核?
要做的几点:
1.第一次运行项目的时候的弹框要说明你定位的目的是什么?(也就是告诉用户你干嘛要定位)
2.只是在这里说明还不够,还要在你的app里面将你定位的数据显示出来,也就是说要有所谓的图形页面展示。如果你的项目需要只是:将定位的数据上传给服务器根本不需要在app展示的话。那么可以试一下:一、就这样提交给appstore,看看能不能侥幸通过(反正我就没试过)。二、针对审核的帐号,将定位的数据通过一个tableView展现出来。反正就是要有所谓的图形页面展示,让苹果知道你定位的作用。
3.现在再看你itunes上的描述,对于开启了后台定位的应用,你的描述里面必须有这样的说明:
不然,照样被拒。
4.如果以上三步都做了,还是被拒,那么就要录一个视频介绍你的app,提供一个视频链接给苹果了。为了保证审批顺利,最好用youtube上传视频,这是一个国外的网站,所以上传的时候,要翻墙上传。网上也说,可以用优酷上传视频,但是优酷是国内网站,苹果那边审核打开你提供的链接肯定会很慢,这也会成为导致审核被拒的原因。
经过以上的操作,一般情况下,开启了后台定位的应用,审核方面都应该没问题了。