2013-05-03 32 views
10

設備時區更改時,我的應用程序是否可以收到任何通知?我想在我的應用程序處於前臺時收到通知。 NSTimezone不適合我,因爲我必須不斷檢查時區。在iOS的時區更改中獲得通知

+0

檢查這個https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSTimeZone_Class/Reference/Reference.html – 2013-05-03 07:07:48

+0

檢查這個http://stackoverflow.com/questions/13741585/notify-app-when-ipad-date-time-settings-changed – 2013-05-03 07:10:21

回答

21

UIApplicationDelegate有一個名爲applicationSignificantTimeChange:的方法,當時間有重大變化時被調用。

的文檔中列出的實施例是:

的顯著時間的變化的例子包括午夜的到來,通過載體中的時間更新,並且變化到日光節約時間

但我會假設時區更改算作一個重大的時間更改。

該文檔也說,如果時間變化發生在你的應用程序在後臺運行,你會得到它,當你去到前臺

如果您的應用程序目前已被暫停,該消息被排隊,直到你應用程序將返回到前臺,並在此時交付。

您還可以收聽UIApplicationSignificantTimeChangeNotification以發佈信息,以在您的應用的其他任何位置獲取相同的信息。

+0

我注意到當應用程序放在前臺並且不在應用程序處於後臺的持續時間時調用觀察者方法並且用戶更改時區或移動到不同的時區。這是預期的行爲?在Android上,這樣的廣播發送到應用程序,即使應用程序在後臺,但我知道他們是兩個不同的操作系統具有非常不同的設計。 – 2016-11-25 10:42:55

+0

剛剛注意到這裏https://developer.apple.com/reference/uikit/uiapplicationdelegate/1622992-applications重要時間交換,它實際上是在前臺時交付的。我想現在我需要找到一種方法,如果我能在應用程序處於後臺時弄清楚它。也許使用後臺獲取來實現它。 – 2016-11-25 13:31:18

+0

您觀察到的所有iOS通知都會排隊,直到應用程序進入前臺。如果您需要在應用程序處於後臺時專門處理某些內容,則可以執行後臺提取。您需要從Apple獲得「授權」才能進行實際的後臺處理。 – leanne 2017-03-18 15:46:21

10

只聽 NSSystemTimeZoneDidChangeNotification

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(timeZoneChanged) name: NSSystemTimeZoneDidChangeNotification object:nil]; 

並記住取消註冊,例如在dealloc方法中。

[[NSNotificationCenter defaultCenter] removeObserver:self name:NSSystemTimeZoneDidChangeNotification object:nil]; 
+0

我注意到,當應用程序放在前臺並且不是應用程序在後臺並且用戶更改時區或移動到其他時區時,應用程序調用觀察者方法'timeZoneChanged here'。這是預期的行爲?在Android上,這樣的廣播發送到應用程序,即使應用程序在後臺,但我知道他們是兩個不同的操作系統具有非常不同的設計。 – 2016-11-25 10:42:33

+0

一旦應用程序恢復,您會收到該通知。 – 2016-11-30 15:33:15

相關問題