1

從蘋果的推送通知指南:接收推送通知iOS中沒有警報消息,即使應用程序不活躍

如果在通知到達目標應用程序沒有運行,警報消息,聲音或徽章值被播放或顯示。如果應用程序正在運行,則iOS將其作爲NSDictionary對象傳遞給應用程序委託。該字典包含相應的Cocoa屬性列表對象(加上NSNull)。

我已經在我的應用程序中實現了這一點,一切工作正常。如果應用程序處於焦點狀態,則應用程序直接獲取消息。如果未激活,則會顯示警報,當用戶單擊警報時應用程序啓動,最後該應用程序獲取消息。

但是,如果在應用程序未處於活動狀態時收到消息,是否可以讓iOS激活應用程序並傳遞消息而不顯示任何消息或需要任何用戶交互?

我希望這種行爲,因爲來自我的服務器的推送消息只有可能是用戶感興趣的,具體取決於她的當前位置。該應用的工作原理是這樣的:當它啓動時,它註冊爲推送並告訴我的服務器:我處於這個位置,並希望在我附近發生有趣的事情時得到通知。稍後服務器發送一條消息,但由於用戶可能已經從該區域移動,我希望應用程序再次檢查用戶的位置,如果現在離原始位置太遠,則不會打擾用戶。

我想有可能有一個後臺服務,通知服務器有關每個n分鐘的當前位置,但我擔心這會耗盡電池。

對此有何看法?

回答

1

不幸的是,您無法 - 在iOS中 - 在收到通知時直接打開您的應用程序。用戶必須選擇通過系統顯示的警報打開它。

但是,使用背景位置不是電池不友好的。這取決於您爲CLLocationManager對象設置的位置精度。

所有關於定位精度的信息可以在這裏找到:Location Awareness Programming Guide

在你的情況,你可能想使用顯著位置改變方法或kCLLocationAccuracyKilometer準確性例子。

這裏是一個很好的教程開始:iOS Multitasking: Background Location

希望這會有所幫助。

+0

謝謝,非常豐富的答案!我將檢查鏈接並報告我的進展 – roshammar 2013-02-28 12:15:35

+0

對於遲到的接受,我確信我早先這麼做過 – roshammar 2013-05-07 07:49:36

相關問題