2012-02-24 42 views
2

我想在iOS中實施地理位置通知,但僅限於特定的日期和時間。iOS中的地理位置通知

只有在用戶處於特定位置並在特定日期和時間時纔會啓動通知。

例如:用戶在里約熱內盧,12點。

有誰知道如何合併這兩個條件來啓動通知?

+0

當您的應用程序正在運行時,或者即使它關閉時,您是否希望這樣做? – Lefteris 2012-05-08 12:37:31

回答

0

沒有什麼內置的,我知道 - 你將不得不自己編碼的邏輯。因此,您只需從CoreLocation獲取地理更新,並且您可以創建計時器以給您時間更新,然後定期編寫一些可執行的邏輯,並且如果時間/地點符合您的業務規則,則會觸發通知。請注意,應用程序必須運行才能完成此操作。您可以從外部服務器發送推送通知,但該服務器必須知道手機的位置,並且您的應用必須告訴它。

這有幫助嗎?

+0

我認爲它可以更簡單,我會搜索更多關於此。不管怎麼說,還是要謝謝你。 – 2012-02-24 01:50:29

0

看來只要位置更新先例,就可以優雅地完成這項工作。

使用此CoreLocation startMonitoringSignificantLocationChanges

要獲得位置更新,而這些更新將可以開始您的應用程序在後臺(如文檔解釋)。然後,在你的AppDelegate的「application:didFinishLaunchingWithOptions」方法中,包含你的邏輯以檢查是否是發送通知的正確時間(通過檢查CoreData中的東西或其他)。

應該沒有必要創建一個定期檢查定時器。讓CoreLocation處理事件的入口點,因爲它會在正確的位置在後臺啓動您的應用程序。

0

這很簡單。我假定你熟悉使用CLLocationManagerMKReverseGeocoder類。爲了您的目的監控只有重大的位置變化可能會很好(即使有時只發生移動的公里)。它將幫助您節省設備上的電池電量。

因此,對於CLLocationManager's委託,您可以使用一種名爲locationManager:didUpdateToLocation:fromLocation的方法。您所需要做的就是使用反向地理編碼,根據MKReverseGeocoder課程的實際位置確定實際城市的名稱。此外,您必須檢查設備上的本地時間,使其與兩者匹配,並相應採取行動(例如,設置本地通知以從後臺喚醒應用程序)。

+0

當用戶已經在正確的位置,當時間改變到有效的時間時,我不認爲這會起作用。 – 2012-09-29 19:02:21

+0

其實羅裏我不得不說你是對的!好想法。 :) 我們必須延續上述內容,並且每當發生重大位置變化時,我們都必須將新位置的城市存儲到** NSUserDefaults **。我們還需要爲12點設置本地通知。當本地通知開始時,我們可以檢查保存的位置,如果它與里約熱內盧匹配,然後顯示它,否則取消(並在第二天設置一個新的)。 感謝您的評論,Rory! – 2012-10-25 10:11:28