2013-05-03 3 views
10

기기 시간대가 변경되면 내 애플리케이션에서 알림을받을 수 있습니까? 내 애플리케이션이 포 그라운드 일 때 알림을 받고 싶습니다. NSTimezone은 시간대를 지속적으로 확인해야하므로 저에게 효과적이지 않았습니다.iOS에서 시간대 변경 알림 받기

+0

확인이 https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSTimeZone_Class/Reference/Reference.html –

+0

확인이 http://stackoverflow.com/question/13741585/notify-app-when-ipad-date-time-settings-changed –

답변

21

UIApplicationDelegate에는 시간이 크게 변할 때 호출되는 applicationSignificantTimeChange:이라는 메서드가 있습니다. 문서에 나와

의 예는 다음과 같습니다 상당한 시간 변경

예는 자정의 도착, 캐리어에 의해 시간의 업데이트 및 일광 절약 시간의 변경을 포함

하지만 시간대 변경은 중요한 시간 변경으로 간주됩니다.

워드 프로세서는 앱이 배경에있을 때 시간 변경이 발생하는 경우 응용 프로그램이 현재 일시 중단 된 경우,이 메시지가 될 때까지 대기

전경에 갈 때 당신이 그것을 얻을 것이다라고하여 응용 프로그램이 포 그라운드로 돌아 오면 포 그라운드로 전달됩니다.

또한 UIApplicationSignificantTimeChangeNotification을 수신하면 앱의 다른 곳과 동일한 정보를 얻을 수 있습니다.

+0

애플 리케이션이 포 그라운드 상태 일 때 관찰자 메서드가 호출되고, 앱이 백그라운드에있을 때가 아니라 사용자가 시간대를 변경하거나 다른 시간대로 이동합니다. 그것은 예상 된 행동입니까? 안드로이드에서 앱이 백그라운드에 있더라도 그런 브로드 캐스트는 앱으로 보내지 만 매우 다른 디자인을 가진 두 개의 다른 OS라는 것을 알게됩니다. –

+0

https://developer.apple.com/reference/uikit/uiapplicationdelegate/1622992-applicationsignificanttimechange가 실제로 포 그라운드에있을 때 전달된다는 사실을 알게되었습니다. 이제 앱이 백그라운드에있는 동안 알아낼 수있는 방법을 찾아야합니다. 어쩌면 배경 가져 오기를 사용하여이를 달성 할 수 있습니다. –

+0

사용자가 관찰 한 모든 iOS 알림은 앱이 포 그라운드가 될 때까지 대기합니다. 앱이 백그라운드에서 수행되는 동안 구체적으로 처리해야하는 경우 백그라운드 가져 오기를 수행 할 수 있습니다. 실제 배경 처리를하려면 Apple에서 "자격"을 얻어야합니다. – leanne

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'는 앱이 포 그라운드에있을 때 호출되며, 앱이 백그라운드에 있고 사용자가 시간대를 변경하거나 다른 시간대로 이동하는 동안에는 호출되지 않습니다. 그것은 예상 된 행동입니까? 안드로이드에서 앱이 백그라운드에 있더라도 그런 브로드 캐스트는 앱으로 보내지 만 매우 다른 디자인을 가진 두 개의 다른 OS라는 것을 알게됩니다. –

+0

앱이 다시 시작되면 알림을받습니다. –