2017-10-17 25 views
0

Swift로 작성된 앱을 사용하여 내 서버에 통계를 업로드합니다. 내 질문은 간단하고 다음과 같습니다. 통계를 업로드 할 가장 좋은시기는 언제입니까?앱 종료 전에 앱 데이터 저장 iOS

하나의 접근법은 앱을 종료 할 때 로컬에서 모든 통계를 저장한다는 것입니다. 그리고 나중에 앱이 열리면 저장된 통계를 업로드하고 삭제합니다.

문제는 applicationWillTerminate가 호출되지 않고 데이터가 업로드되지 않고 손실 될 수 있다는 것입니다.

내 문제를 해결하는 가장 좋은 방법은 무엇입니까?

감사합니다.

+0

사용 분석을위한 자체 작성 코드가 있습니까? firebase-analytics를 사용하는 이유는 무엇입니까? – AlexWoe89

+0

@ AlexWoe89 특정 서버에 제출하기 위해 앱에서 애널리틱스를 가져와야했습니다. 내가 파이어베이스를 사용할 수 있다면 나도 그랬을거야. – krypton36

+0

통계가 업데이트되면 실시간으로 서버에 통계를 업로드해야한다고 생각합니다. – Zee

답변

0

생성 된 데이터는 언제든지에 저장하십시오. 앱이 실행되면 앱을 전송하고 로컬 캐시를 지 웁니다. application:didFinishLaunchingWithOptions:을 사용하면 을 감지 할 수 있습니다.

모든 정보를 한 번에 저장하는 대신 주기적으로 안전하게 보관해야하는 정보를 캐시하는 것이 좋습니다.

+0

즉시 데이터를 저장하거나 앱이 종료되면 저장하십시오. – krypton36

+0

앱이 종료 될 때까지 기다리면 정보가 위험에 처하게됩니다 (어떤 이유로 든 앱이 종료되는 경우). 그래서 UI 블록을 피하기 위해 배경 스레드에서 생성 된 즉시 저장하십시오. 그런 다음 앱을 다시 실행하거나 적합한 것을 찾을 때마다 서버로 보냅니다. 사용자가 앱을 다시 실행하지 않아도 주기적으로 보낼 수도 있습니다. – jvrmed

0

@jvrmed와 비슷하게 통계를 기록하고자 할 때마다에 데이터를 로컬로 저장하는 것이 좋습니다 (). 그러나 귀하의 응용 프로그램이 사임하려고 할 때 (즉 백그라운드에있을 때) 서버에 해당 데이터를 밀어 넣는 것이 좋습니다.

func applicationWillResignActive(_ application: UIApplication) { } 
+0

감사합니다.하지만 왜 applicationWillResignActive를 사용하여 데이터를 푸시해야합니까? didFinishLaunchingWithOptions 대신에? – krypton36

+2

@ krypton36'didFinishLaunching'은 사용자가 앱을 다시 실행 한 후에 만 ​​데이터를 푸시합니다. 'willResignActive'를 사용하면 사용자가 앱을 종료 할 때'didFinishLaunching' 명령으로 저장되는 것보다 빨리 데이터를 저장합니다. 또한, willResignActive는 사용자가 종료 할 때마다 실행되고, didFinishLaunching은 앱이 이미 메모리에 있고 단순히 다시 액세스 한 경우 시작되지 않습니다. –