2016-10-07 97 views
1

我希望有一點指導。我有一個可以作爲藍牙外設的應用程序。如果用戶殺死應用程序,通過向上滑動,服務就會死亡。我想也許使用geofencing,如果他們進入或退出一個地區,然後嘗試再次啓動服務。 我的問題:這可能嗎?或者,iOS是否限制了你可以做的和不能做的地理圍欄?我只看到了在離開或進入區域時只顯示通知的示例。iOS藍牙服務建議

如果地理界線是不是要走的路,如何讓我的藍牙服務運行任何其他建議?

回答

1

你可以用地理界線做的是讓操作系統監視一個多個區域(最多20個)。然後,當設備進入該區域時,操作系統會在後臺喚醒您的應用程序,並允許它執行任何您想要的任務(顯示通知僅僅是您可以執行的一個示例)。如果尚未啓動,它也會啓動您的應用程序。

默認情況下,應用程序不允許在後臺連續運行,因此在幾分鐘(或幾秒鐘後,由操作系統決定電池使用時間決定)後,您的應用程序將恢復到睡眠狀態。這就是爲什麼應用程序通常執行非常短的任務。

但是,如果你的應用程序被允許在後臺持續運行,那麼它會留在後臺運行,即使你離開該地區。請注意,這不是默認情況下應用程序可以執行的操作,這是您必須在Xcode功能中明確請求的功能。

所以看起來你可以使用地理界線來應用自動將用戶殺死它的權利後,重新啓動嗎?那麼還有一條規則是不可能的:如果用戶以前用刷子刷過它,那麼系統永遠不會在後臺喚醒你的應用程序。這是系統給用戶的保證:當他們殺了一個應用程序,它被殺死了,它不會由於任何原因自行重新啓動。

長話短說:如果用戶殺死你的應用程序,它再次開始的唯一途徑是,如果他們啓動它自己通過點擊主屏幕上的圖標。這對開發者來說可能是一件壞事,但對用戶來說這實際上是一件好事。

+0

感謝您的回覆!你寫道:「如果還沒有開始,它也會啓動你的應用程序。」然後最後兩段說這是不可能的。感覺像那些矛盾。 – KotaBear233

+0

不是。當內存很短時,因爲你有很多應用程序在後臺休眠,系統保留殺死其中一些的權利。在這種情況下,由於這不是用戶發起的殺手,系統會根據需要無縫地重新啓動應用程序。 – deadbeef

+0

嘗試雙擊主頁按鈕並轉到「舊」應用程序(一段時間未使用過的應用程序),它會看起來像正在運行,因爲您看到它是最後一個狀態的屏幕截圖,但是當您點擊它時你會注意到它不會回到原來的位置,而是從頭開始。這是因爲系統在沒有詢問你的情況下殺死它,並在必要時正常重啓。 – deadbeef

0

如果啓用後臺位置服務在您的應用程序的功能,您可以使用顯著變化監測重啓即使用戶力殺死它您的應用程序。但是,這不會是直接的。它要求用戶顯着改變他們的位置。他們還必須允許您的應用使用位置服務。