2013-07-28 4 views
1

사용자가 앱을 열 때마다 타임 스탬프를 기록하고 싶습니다. 이제는 ViewDidLoad 메서드로 기록 할 수 있었지만 사용자가 앱을 닫고 배경으로 이동 한 다음 앱을 다시 열면 ViewDidLoad이 더 이상 실행되지 않기 때문에 타임 스탬프를 얻을 수 없습니다. 내 타임 스탬프 코드를 어디에 둘 것인지 생각하는 사람이 있습니까?사용자가 앱을 사용할 때마다 TimeStamp를 기록하십시오.

+0

대신에 viewWillAppear을 사용하십시오. http://stackoverflow.com/questions/3643559/what-uiviewcontroller-method-is-called-when-opening-app-from-background – Madivad

+0

'viewWillAppear :'[전화를받을 수 없습니다] 것 (HTTP ://stackoverflow.com/questions/5277940/why-does-viewwillappear-not-get-called-when-an-app-comes-back-from-the-background) 애플리케이션이 포 그라운드로 들어갈 때. – omz

답변

3

당신은 - (void)applicationDidBecomeActive:(UIApplication *)application 안에 넣어 수 있습니다,하지만 그것은 좋지 않다 접근법은 앱을 시작하는 사용자가 타임 스탬프가 저장되는 유일한 활동이 아니기 때문에이 메소드가 ca를 얻을 수있는 다른 상황이 있으므로 lled. 애플의 Documentation

applicationDidBecomeActive에서

는 : 응용 프로그램 이 활성화되고있다 대리자를 알려줍니다.

이 메서드는 응용 프로그램에 이 비활성 상태에서 활성 상태로 이동했음을 알리기 위해 호출됩니다. 이는 사용자 또는 시스템이 응용 프로그램을 시작했기 때문에 발생할 수 있습니다. 응용 프로그램이 을 일시적으로 비활성 상태로 보낸 인터럽트 (들어오는 전화 통화 또는 SMS 메시지 등)를 무시하도록 선택하면 응용 프로그램도 을 활성 상태로 되돌릴 수 있습니다.

올바른 접근 방식은 모두 application:didFinishLaunchingWithOptions:applicationWillEnterForeground: 내부에 첫 번째 방법은 첫 번째 실행하고 응용 프로그램이 백그라운드에서 실행되는 두 번째에 불려가는 타임 스탬프를 저장하는 코드를 삽입하는 것입니다. 무시 된 인터럽트가 앱을 백그라운드로 보내지 않으므로 applicationWillEnterForeground은이 경우 호출되지 않으므로 사용자가 전화 통화를 무시한 후에도 타임 스탬프가 저장되지 않습니다.

this answer을 확인하십시오. 배경에 앱을 보내고 포 그라운드로 다시 가져 오는 방법과 각 기능을 사용해야하는 방법에 대한 역할을 매우 잘 요약하고 있습니다.

0

대신 - (void)viewDidAppear:(BOOL)animated: 을 사용해보세요. 보기가 화면에 나타날 때마다 호출됩니다.

또는 당신이 UIApplicationDelegate에보고 같은 것을 구현하는 시도 할 수 있습니다 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

또는

- (void)applicationDidBecomeActive:(UIApplication *)application

관련 문제