2016-11-01 5 views
0

앱이 백그라운드 상태 일 때 작업을 실행해야합니다. 예를 들어, 앱이 백그라운드 상태로 들어가면 매 5 분마다 (이 시간에 앱이 배경에 있음) 작업이 실행됩니다. 위치가 변경되었지만 정확한 위치를 사용할 수 없습니다 (배터리 사용). 그런 다음 중요한 위치가 변경되었지만 사용자가 이동하지 않거나 셀 타워 위치를 변경하지 않으면 업데이트되지 않습니다.Background task swift 3.0 iOS

도와 줄 수 있습니까?

+0

이것은 백그라운드에서 무엇을하고 싶은가에 달려 있습니다. iOS는 백그라운드에서 특정 작업 만 수행하도록 허용합니다. [장기 실행 작업 구현] (https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#// apple_ref/doc/uid/TP40007072-CH4-SW4) –

+1

아마 당신의 접근 방식을 다시 생각할 필요가있을 것입니다. iOS는 일시 중지 된 응용 프로그램이 특정 시간 간격으로 실행되도록 예약하지 못하게합니다. 과제의 성격은 무엇입니까? 아마도 서버 푸시와 같은 다른 방법으로 트리거 할 수 있습니다. – Paulw11

+0

읽어보기 : https://blog.newrelic.com/2016/01/13/ios9-background-execution/ –

답변

0

최소 배경 가져 오기 간격을 지정할 수있는 iOS 백그라운드 가져 오기 기능을 사용할 수 있습니다. 그러나 코드를 연속적으로 호출하는 실제 간격은 iOS 프레임 워크에 의해 결정됩니다. swift-ios-refreshing-app-data-when-in-background

또 다른 옵션이 앱에 앱이 반응 할 수 5 분마다 (자동) 푸시 알림을 전송하는 서버를 설치하는 것입니다

func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 

    let data: String? = nil 

    do { 
     //fetch some data 
     if let data = getSomeNewData() { 
      /* use the completionHandler to talk to the system and tell us if the app fetched new data, or if no data was available. */ 
      completionHandler(.newData) 
     } else { 
      completionHandler(.noData) 
     } 
    } catch { 
     print(error) 
     completionHandler(.failed) 
    } 

} 

는 질문을 참조하십시오.

관련 문제