(iOS)Background fetch를 구현하는 방법
Background fetch란?
앱을 실행하지 않아도 OS의 판단에 적절하다고 생각되는 타이밍에서 임의의 처리를 백그라운드에서 실행할 수 있습니다.
1단계 Background fetch 활성화
Capabilities → Background Modes → Background fetch를 켭니다.
2단계 모든 작업을 수행할 간격 지정
AppDelegate.swift의 didFinishLaunchingWithOptions
application.setMinimumBackgroundFetchInterval (UIApplicationBackgroundFetchIntervalMinimum)
구현합니다.
※ UIApplicationBackgroundFetchIntervalMinimum이라고 해도 OS의 판단으로 처리가 불리기 때문에, 항상 불리는 것은 아닙니다.
AppDelegate.swiftfunc application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
return true
}
3단계 백그라운드에서 수행되는 프로세스 구현
처리를 구현합니다.
처리가 끝나면 completionHandler를 구현해야합니다.
약 30초간 유예가 주어지고 있으므로, 이 사이에 처리를 완료해 completeHandler를 호출할 수 있도록 합시다.
만약 completeHandler가 불리지 않으면 다음에 백그라운드에서 불릴 때의 간격에 영향을 주는 것 같습니다.
AppDelegate.swiftfunc application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
//バックグラウンドで実行する処理
//適切なものを渡します → 新規データ: .newData 失敗: .failed データなし: .noData
completionHandler(.newData)
}
디버깅 방법①
Edit Scheme...에서 아래를 열고 Background Fetch의 Launch due to a background fetch event를 체크합니다.
이제 실행하면 performFetchWithCompletionHandler가 호출됩니다.
디버깅 방법②
Debug → Simulate Background Fetch를 선택하면 performFetchWithCompletionHandler가 호출됩니다.
단지 실제 기계에서는 왜 잘 작동하지 않았습니다.
마지막으로
자신을 위한 메모로 남겼습니다.
Reference
이 문제에 관하여((iOS)Background fetch를 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hideyukitone/items/6ff168c4adc52a348359
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Capabilities → Background Modes → Background fetch를 켭니다.
2단계 모든 작업을 수행할 간격 지정
AppDelegate.swift의 didFinishLaunchingWithOptions
application.setMinimumBackgroundFetchInterval (UIApplicationBackgroundFetchIntervalMinimum)
구현합니다.
※ UIApplicationBackgroundFetchIntervalMinimum이라고 해도 OS의 판단으로 처리가 불리기 때문에, 항상 불리는 것은 아닙니다.
AppDelegate.swiftfunc application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
return true
}
3단계 백그라운드에서 수행되는 프로세스 구현
처리를 구현합니다.
처리가 끝나면 completionHandler를 구현해야합니다.
약 30초간 유예가 주어지고 있으므로, 이 사이에 처리를 완료해 completeHandler를 호출할 수 있도록 합시다.
만약 completeHandler가 불리지 않으면 다음에 백그라운드에서 불릴 때의 간격에 영향을 주는 것 같습니다.
AppDelegate.swiftfunc application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
//バックグラウンドで実行する処理
//適切なものを渡します → 新規データ: .newData 失敗: .failed データなし: .noData
completionHandler(.newData)
}
디버깅 방법①
Edit Scheme...에서 아래를 열고 Background Fetch의 Launch due to a background fetch event를 체크합니다.
이제 실행하면 performFetchWithCompletionHandler가 호출됩니다.
디버깅 방법②
Debug → Simulate Background Fetch를 선택하면 performFetchWithCompletionHandler가 호출됩니다.
단지 실제 기계에서는 왜 잘 작동하지 않았습니다.
마지막으로
자신을 위한 메모로 남겼습니다.
Reference
이 문제에 관하여((iOS)Background fetch를 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hideyukitone/items/6ff168c4adc52a348359
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
return true
}
처리를 구현합니다.
처리가 끝나면 completionHandler를 구현해야합니다.
약 30초간 유예가 주어지고 있으므로, 이 사이에 처리를 완료해 completeHandler를 호출할 수 있도록 합시다.
만약 completeHandler가 불리지 않으면 다음에 백그라운드에서 불릴 때의 간격에 영향을 주는 것 같습니다.
AppDelegate.swift
func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
//バックグラウンドで実行する処理
//適切なものを渡します → 新規データ: .newData 失敗: .failed データなし: .noData
completionHandler(.newData)
}
디버깅 방법①
Edit Scheme...에서 아래를 열고 Background Fetch의 Launch due to a background fetch event를 체크합니다.
이제 실행하면 performFetchWithCompletionHandler가 호출됩니다.
디버깅 방법②
Debug → Simulate Background Fetch를 선택하면 performFetchWithCompletionHandler가 호출됩니다.
단지 실제 기계에서는 왜 잘 작동하지 않았습니다.
마지막으로
자신을 위한 메모로 남겼습니다.
Reference
이 문제에 관하여((iOS)Background fetch를 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hideyukitone/items/6ff168c4adc52a348359
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Debug → Simulate Background Fetch를 선택하면 performFetchWithCompletionHandler가 호출됩니다.
단지 실제 기계에서는 왜 잘 작동하지 않았습니다.
마지막으로
자신을 위한 메모로 남겼습니다.
Reference
이 문제에 관하여((iOS)Background fetch를 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hideyukitone/items/6ff168c4adc52a348359
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여((iOS)Background fetch를 구현하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hideyukitone/items/6ff168c4adc52a348359텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)