一般來說,蘋果為了保持iphone的使用流暢,是不允許應(yīng)用在后臺持續(xù)開啟的。應(yīng)用退到后臺后,在600s內(nèi)會隨機退出應(yīng)用(也就是在內(nèi)存吃緊的時候就會強制退出退到后臺的應(yīng)用),在600內(nèi)是絕對會將后臺應(yīng)用退出的。如果想要應(yīng)用退到后臺一直運行,則需要做一些響應(yīng)的設(shè)置。
我們知道:一般情況,只有項目開啟了后臺定位、后臺播放音樂這兩種方式,蘋果才會允許我們應(yīng)用在后臺繼續(xù)執(zhí)行。
在上一篇的《IOS之定位淺談》我們已經(jīng)知道如何開啟定位?如何讓計時器在后臺仍能計時的了。因為項目需求,我是每十秒獲取一次定位的。所以每開啟一次定位成功回調(diào)后就會馬上停止定位。因此,就我的項目而言,會出現(xiàn)這樣的一種情況(指應(yīng)用在后臺運行):當定位回調(diào)成功后,就會 [self.locationManager stopUpdatingLocation];而距離下一次定位start前,就已經(jīng)先到600s了,這樣程序就會被退出。舉例:我在596s回調(diào)成功一次后就停止定位,那么下一次開始定位的時間是:606s,但在600s的時候應(yīng)用在后臺已經(jīng)退出了。所以無效!
ps:當然不一定是600s才會這樣,應(yīng)用在后臺運行時候,任何內(nèi)存吃緊的時候,都會發(fā)生這樣的情況。
如何解決這樣的問題呢?前面說過,只要開啟后臺定位,應(yīng)用在后臺就可以無限制執(zhí)行。很簡單:只要再定義一個locationManager2,開啟后,不要停止。locationManager2的作用就是讓應(yīng)用在后臺一直執(zhí)行。當然:如果你需要不是需要每十秒獲取一次,也就不需要locationManager2了。
開啟后臺定位后,應(yīng)用如何通過appstore的審核?
要做的幾點:
1.第一次運行項目的時候的彈框要說明你定位的目的是什么?(也就是告訴用戶你干嘛要定位)


2.只是在這里說明還不夠,還要在你的app里面將你定位的數(shù)據(jù)顯示出來,也就是說要有所謂的圖形頁面展示。如果你的項目需要只是:將定位的數(shù)據(jù)上傳給服務(wù)器根本不需要在app展示的話。那么可以試一下:一、就這樣提交給appstore,看看能不能僥幸通過(反正我就沒試過)。二、針對審核的帳號,將定位的數(shù)據(jù)通過一個tableView展現(xiàn)出來。反正就是要有所謂的圖形頁面展示,讓蘋果知道你定位的作用。
3.現(xiàn)在再看你itunes上的描述,對于開啟了后臺定位的應(yīng)用,你的描述里面必須有這樣的說明:

不然,照樣被拒。

4.如果以上三步都做了,還是被拒,那么就要錄一個視頻介紹你的app,提供一個視頻鏈接給蘋果了。為了保證審批順利,最好用youtube上傳視頻,這是一個國外的網(wǎng)站,所以上傳的時候,要翻墻上傳。網(wǎng)上也說,可以用優(yōu)酷上傳視頻,但是優(yōu)酷是國內(nèi)網(wǎng)站,蘋果那邊審核打開你提供的鏈接肯定會很慢,這也會成為導致審核被拒的原因。
經(jīng)過以上的操作,一般情況下,開啟了后臺定位的應(yīng)用,審核方面都應(yīng)該沒問題了。