本發(fā)明涉及ios客戶端設置領域,具體涉及一種在ios客戶端后臺持續(xù)運行app的方法及系統(tǒng)。
背景技術:
隨著移動互聯(lián)網(wǎng)不斷的發(fā)展,用戶需要在ios客戶端上同時使用和切換多個app(application,應用程序)。將用戶指定的app定義為app1,將客戶端上其他app定義為app2;用戶使用app1的方法一般為:用戶運行app1后,當用戶切換運行app2時,app1需要在后臺持續(xù)運行。上述方法能夠使得用戶使用app2時,app1也能夠在后臺執(zhí)行其功能(例如播放音頻等),用戶切換回app1時,app1能夠與切換前的運行信息相銜接(例如繼續(xù)展示切換之前的運行界面和運行信息等)。
蘋果公司的backgroundmodel(后臺運行模式)能夠實現(xiàn)app在ios客戶端的后臺運行,但是,app在ios客戶端的后臺運行時,存在以下缺陷:
(1)app在ios客戶端的后臺運行的充分條件為:對ios客戶端進行后臺定位,因此為了保證app在ios客戶端的后臺持續(xù)運行,需要持續(xù)對ios客戶端進行后臺定位,而后臺定位會消耗ios客戶端大量的電量,占用ios客戶端的內(nèi)存,進而降低了用戶體驗。
(2)app在ios客戶端的后臺持續(xù)運行的基礎條件:app持續(xù)取得ios客戶端的后臺運行權限,當用戶切換其他app時,若其他app運行了與后臺app相同的功能,則后臺app會失去后臺運行權限,進而無法持續(xù)運行。例如,后臺app為音頻應用程序1(qq音樂),其他app為音頻程序2(酷我音樂),當酷我音樂播放音樂時,功能相同的qq音樂則會在后臺停止播放音樂,進而失去后臺運行權限。此時,用戶若需要繼續(xù)運行qq音樂,則需要重新啟動qq音樂;當用戶反復切換app時,需要多次重新啟動app,其操作過程比較繁瑣,用戶體驗較差。
技術實現(xiàn)要素:
針對現(xiàn)有技術中存在的缺陷,本發(fā)明解決的技術問題為:如何在ios客戶端定位功能關閉的情況下,使得app在ios客戶端的后臺持續(xù)運行。
為達到以上目的,本發(fā)明提供的在ios客戶端后臺持續(xù)運行app的方法,包括以下步驟:
步驟a:當app由ios客戶端的前臺切換至后臺運行時,打開ios客戶端的后臺定位功能;當ios客戶端獲取到至少1次定位地點后,轉到步驟b;
步驟b:在ios客戶端中創(chuàng)建backgroundtask(后臺運行作業(yè)),關閉ios客戶端的后臺定位功能,通過backgroundtask接管app的后臺運行權限,轉到步驟c;
步驟c:在指定周期后,重新打開ios客戶端的后臺定位功能,關閉backgroundtask,轉到步驟d;
步驟d:判斷ios客戶端是否繼續(xù)運行app,若是,轉到步驟a;否則結束。
本發(fā)明提供的在ios客戶端后臺持續(xù)運行app的系統(tǒng),包括后臺定位開啟模塊、后臺作業(yè)創(chuàng)建模塊和后臺定位刷新模塊;
后臺定位開啟模塊用于:當app由ios客戶端的前臺切換至后臺運行時,打開ios客戶端的后臺定位功能;當ios客戶端獲取到至少1次定位地點后,向后臺作業(yè)創(chuàng)建模塊后臺作業(yè)創(chuàng)建信號;
后臺作業(yè)創(chuàng)建模塊用于:收到后臺作業(yè)創(chuàng)建信號后,在ios客戶端中創(chuàng)建backgroundtask,關閉ios客戶端的后臺定位功能,通過backgroundtask接管app的后臺運行權限,向后臺定位刷新模塊發(fā)送后臺定位刷新信號:
后臺定位刷新模塊用于:在指定周期后,重新打開ios客戶端的后臺定位功能,關閉backgroundtask。
與現(xiàn)有技術相比,本發(fā)明的優(yōu)點在于:
(1)參見本發(fā)明步驟b和步驟c可知,本發(fā)明在ios客戶端的后臺定位功能關閉時,通過創(chuàng)建的后臺運行作業(yè),來接管app的后臺運行權限,進而保證了app在ios客戶端的后臺持續(xù)運行。
有鑒于此,與現(xiàn)有技術中持續(xù)開啟后臺定位功能相比,本發(fā)明的后臺運行作業(yè)只是單純的接管app的后臺運行權限,并未做任何占用內(nèi)存的其他操作。因此,參見本發(fā)明步驟c和步驟d可知,本發(fā)明通過后臺運行作業(yè)和后臺定位功能的循環(huán)使用,不僅能夠顯著節(jié)省ios客戶端的內(nèi)存和用電量,而且能夠在后臺進行與app相關的操作,還能夠定時獲取到ios客戶端的定位數(shù)據(jù)。
與現(xiàn)有技術中app無法持續(xù)取得ios客戶端的后臺運行權限相比,本發(fā)明的后臺運行作業(yè),能夠在ios客戶端使用其他app時,依然保持后臺app的后臺運行權限。因此,采用本發(fā)明的ios客戶端使用時,用戶不需要反復開啟app。
由此可知,本發(fā)明極大的提升了ios客戶端的用戶體驗,非常適于推廣。
(2)本發(fā)明只要在app在ios客戶端后臺運行時,才會創(chuàng)建和使用后臺運行作業(yè);因此,本發(fā)明避免了因app不在ios客戶端后臺運行仍創(chuàng)建和使用后臺運行作業(yè)的情形,進一步節(jié)省了ios客戶端的用電量和內(nèi)存。
(3)本發(fā)明的后臺運行作業(yè)接管app的后臺運行權限之前,需要獲取10個ios客戶端的定位地點,進而保證了ios客戶端移動軌跡的清晰,便于用戶準確的使用ios客戶端上的app,進一步提升了用戶體驗。
附圖說明
圖1為本發(fā)明實施例中在ios客戶端后臺持續(xù)運行app的方法的流程圖。
具體實施方式
以下結合附圖及實施例對本發(fā)明作進一步詳細說明。
參見圖1所示,本發(fā)明實施例中的在ios客戶端后臺持續(xù)運行app的方法,包括以下步驟:
s1:當app由ios客戶端(例如蘋果手機和ipad)的前臺切換至后臺運行時,打開ios客戶端的后臺定位功能;當ios客戶端獲取到至少1次定位地點后,轉到s2。
s1中定位地點獲取次數(shù)為10次,獲取10次定位地點能夠保證ios客戶端移動軌跡的清晰,進而便于用戶準確的使用ios客戶端上的app。
s2:判斷app是否在ios客戶端的后臺運行,若是,轉到s3,否則轉到s5。
s2中判斷app是否在ios客戶端的后臺運行的具體實現(xiàn)方式為:
調用[uiapplicationsharedapplication]applicationstate]方法,得到一個枚舉常量;若枚舉常量為uiapplicationstatebackground,則證明app是ios客戶端后臺運行。
s2的原理和好處為:若app在執(zhí)行s1的過程中不在ios客戶端運行,則可能出現(xiàn)2種情形:1、app在ios客戶端前臺運行,此時ios客戶端會持續(xù)進行后臺定位;2、ios客戶端關閉app,此時ios客戶端不需要進行后臺定位。上述2種情形均不需要進行后續(xù)流程,而s2避免了上述2種情形發(fā)生時,仍繼續(xù)進行后續(xù)流程的情況,節(jié)省了ios客戶端的用電量和內(nèi)存,進而提升了用戶體驗。
s3:在ios客戶端中創(chuàng)建1個backgroundtask(后臺運行作業(yè),基于backgroundmodel創(chuàng)建)后,將backgroundtask作為當前類的一個屬性currenttask進行保存;關閉ios客戶端的后臺定位功能,通過backgroundtask接管app的后臺運行權限,轉到s4。
s3中開啟backgroundtask的具體實現(xiàn)方式為:調用(uibackgroundtaskidentifier)beginbackgroundtaskwithexpirationhandler:(void(^__nullable)(void))方法,返回一個創(chuàng)建好的backgroundtask。
s4:為了定期告知用戶app在后臺運行,需要定期對ios客戶端進行后臺定位,因此,本發(fā)明在定時器定時的指定周期后(本實施例為3分鐘),會重新打開ios客戶端的后臺定位功能,此時關閉s3中開啟的backgroundtask,轉到s5。
s4中關閉backgroundtask的具體實現(xiàn)方式為:將s3中的currenttask屬性放入以下參數(shù):
uiapplication.sharedapplication().endbackgroundtask(self.currenttask)。
s5:判斷ios客戶端是否繼續(xù)運行app,若是,轉到s1;否則結束。
通過s4和s5可知,本發(fā)明的后臺定位功能為定時開啟,與現(xiàn)有技術中持續(xù)開啟后臺定位功能相比,本發(fā)明顯著的節(jié)省了ios客戶端的電量和內(nèi)存,進而極大的提升了用戶體驗。
本發(fā)明實施例提供的在ios客戶端后臺持續(xù)運行app的系統(tǒng),包括后臺定位開啟模塊、后臺作業(yè)創(chuàng)建模塊和后臺定位刷新模塊。
后臺定位開啟模塊用于:當app由ios客戶端的前臺切換至后臺運行時,打開ios客戶端的后臺定位功能;當ios客戶端獲取到至少1次(本實施例中為10次)定位地點、并確認app在ios客戶端的后臺運行后,向后臺作業(yè)創(chuàng)建模塊后臺作業(yè)創(chuàng)建信號。
后臺作業(yè)創(chuàng)建模塊用于:收到后臺作業(yè)創(chuàng)建信號后,在ios客戶端中創(chuàng)建backgroundtask(基于蘋果公司的backgroundmodel),關閉ios客戶端的后臺定位功能,通過backgroundtask接管app的后臺運行權限,向后臺定位刷新模塊發(fā)送后臺定位刷新信號:
后臺定位刷新模塊用于:在指定周期(本實施例中為3分鐘)后,重新打開ios客戶端的后臺定位功能,關閉backgroundtask。
至此可知,本發(fā)明實施例不僅能夠顯著節(jié)省ios客戶端的內(nèi)存和用電量,而且使得用戶不需要反復開啟app,進而極大的提升了ios客戶端的用戶體驗,非常適于推廣。
進一步,本發(fā)明不局限于上述實施方式,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍之內(nèi)。本說明書中未作詳細描述的內(nèi)容屬于本領域專業(yè)技術人員公知的現(xiàn)有技術。