2016-10-30 26 views
4

임 iOS 프로그래밍에 상당히 익숙하며주기적인 백그라운드 동기화를 구현하여 내 서버 데이터를 클라이언트 데이터와 동기화하려고합니다. 내가 성취하고자하는 것은 시간 간격 (예 : 각 30 분)을 정의 할 수있는 Androids SyncAdapter과 비교되며 시스템은 정의 된 작업을 백그라운드에서 자동으로 실행합니다.주기적 백그라운드 동기화

지금까지 Swift 3.0에서 이러한 메커니즘을 찾을 수 없었으므로 somone에 경험이나 힌트가 있는지 질문 할 필요가 있습니다. 내가 원하는 무엇

은 매우 간단 소리 :

앱이 응용 프로그램이 설치 자동으로 백그라운드 작업을 30 분마다 트리거 동기화 관리자를해야 처음으로 시작됩니다. 백그라운드 작업은 Alamofire를 사용하여 서버와 클라이언트 데이터를 동기화합니다.

어떻게하면됩니까?

답변

6

은 네트워크 설치 프로그램 minimumBackgroundFetchInterval을 할 수

에서 적은 양의 내용을

정기적으로

다운로드로 설정하고 처리 할 수 ​​BackgroundFetch라는 아이폰 OS 기능이있다.

위에서 언급 한 Android 기능과 달리이 간격은 보장되지 않습니다.

OS는 블랙 박스에서 일부 경험칙을 수행합니다. "합리적인"(OS에 대한) CPU 시간/전력 소비를 사용하고 또한 사용자가 자주 사용하는 것에 대해 보상합니다. 반면에 앱을 사용한 적이없는 경우 배터리를 방전 한 경우 처벌을받습니다.

은 참조 : Apple Documentation


또한, 필요에 따라, 당신은 Silent (push) Notification을 게시 할 때마다 서버 측의 사용자 데이터가 변경. 자동 푸시 기능은 사용자에게 알리지 않고 앱을 깨우므로 데이터를 가져와 로컬 알림을 예약하여 사용자에게 알릴 수 있습니다.

참조 : Apple Documentation

+0

처벌을 받는다는 것은 무엇을 의미합니까? –

+0

@AkashRajput 시간이 적어짐에 따라 처벌받습니다. 즉, 배경 가져 오기가 자주 발생하지 않습니다. – shallowThought

1

수 없습니다. 애플은 써드 파티 앱이 그런 규칙적인 배경 시간을 갖는 것을 허용하지 않는다. 새로운 콘텐츠를 사용할 수있게되면 서버에서 silent push notification을 구현하는 것과 같은 또 다른 접근 방식을 찾아야합니다.

+0

와우! 진심이야? 그런 기능이 없다는 것은 믿기지가 않습니다. 구글에서 발견 한 'NSBackgroundActivityScheduler'는 어떨까요? 그러나 Swift 3.0에서는 존재하지 않습니다. – Mulgard

+0

https://developer.apple.com/reference/foundation/nsbackgroundactivityscheduler 문서에서 'NSBackgroundActivityScheduler'는 iOS가 아니라 MacOS 용임을 알 수 있습니다. iOS에서 배경 가져 오기 또는 서버 푸시를 사용해야합니다. – Paulw11