일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- flutter 회전
- swift sms
- 스위프트 카메라
- 스위프트 테이블 뷰 셀
- NotificationService Extension
- 안드로이드 숏컷
- 안드로이드 에러
- 안드로이드 FCM
- Swift flutterview
- 스위프트
- 스위프트 웹뷰
- 안드로이드 바로가기
- 푸시 데이터 저장
- 앱 백그라운드 푸시 데이터 저장
- 안드로이드 앨범
- Swift flutterviewcontroller
- 스위프트 푸시
- silent push
- native flutter view
- 플러터 뷰 컨트롤러
- 노티피케이션 익스텐션
- 스위프트 앨범
- FlutterView MethodChannel
- swift 문자
- Flutter NativeView
- Flutter UIKitView MethodChannel
- flutter rotate
- swift autolayout
- 스위프트 UserDefaults
- 앱 꺼졌을 때 푸시 데이터 저장
- Today
- Total
Things take time
[SWIFT] XCODE내 Background Modes에 대하여.. 본문
[Background Modes]
이 부분은 사실 실습은 하지 못했고.. 구글링을 통해 얻게 된 정보들을 정리하려 한다.
원래 알게 된 계기는 푸시를 받았을 때 네이티브 단에서 앱의 뱃지 카운트를 올리기 위해 여러가지 실습중에 알게 되었다.
결론적으로 네이티브 단에서 푸시를 받았을 때 뱃지 카운트를 자동 증가할 수 있는 방법은 없다고한다.
안드로이드에서는 가능하지만, 아이폰에서는 서버단에서 푸시를 보내는 JSON데이터 안에 badge 키 값에 값을 할당하는 수밖에..(물론 네이티브 푸시 세팅에서 뱃지를 받겠다고도 설정해야 함)
어쨌든, 백그라운드 모드란.. 앱이 현재 실행중이지 않은 상태, 홈버튼을 누른 상태를 의미한다. 이 상태에서 여러 기능을 작동시킬 때 사용한다.
여기서 기능을 작동시키는 스위치만을 적용할 수 있으며, 실제 그 동작을 작동시키는 코드는 AppDelegate.swift의 각 함수를 오버라이드해서 사용해야 한다.
모든 것을 다 알아본 것은 아니라서..
여기서 Background fetch, Remote notifications에 대해서 간략히 정리한다.
백그라운드 페치는 말 그대로, 백그라운드 모드에서 데이터를 페치(가져오다)하기 위함인데
AppDelegate.swift에서 application:didFinishLaunchingWithOptions라는 메소드에서 사용하면 된다. 앱이 실행되면 자동으로 호출되는 메소드다. 푸시 관련 작업이나 맵 같은 초기 API값 등을 세팅하는 등에서 활용하는 메소드인데, 여기에서 Background fetch를 사용할 경우도 작성하면 된다.
예를들면, 업데이트 체크와 같은 로직을 넣을 수 있다. 시간 설정등을 통해 어느 간격마다 호출되는 방식인데, OS에게 일임하는 방식으로 사용하면 개발자가 원하는 시간이 아니라 OS에서 페치하기 좋은 시간에 작동한다고 한다.
관련 키워드 : UIApplicationBackgroundFetchIntervalMinimum
리모트 노티피케이션은 말 그대로 푸시가 떠오르는데.. 일반적으로 사용하는 푸시가 아니라, 사일런트 푸시라하여 푸시를 받으면 백그라운드에서 작업해야하는 경우를 의미한다. 백그라운드 페치는 일정 시간 간격으로 계속 돌기 때문에, 빈번한 업데이트 등에서는 활용할 수 있으나 어쩌다 오는 경우에 백그라운드를 사용해야할 경우, 좋지 않은 코드가 된다.
이때 사용하는 부분이며 작성하는 메소드는 아래와 같다. 만약 사용하지 않는다면 completionHandler가 없는 didReceiveRemoteNotification을 사용할 것
관련 키워드 : public func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Swift.Void)
'iOS (기능)' 카테고리의 다른 글
[iOS] 개발자 계정 하나를 다른 맥에서도 실행하기 (0) | 2017.08.23 |
---|---|
[SWIFT] 뷰 전환하기 및 데이터 전달 (0) | 2017.08.11 |
[SWIFT] 뱃지(Badge) 설정하기 (0) | 2017.07.31 |
[SWIFT] 특정 프로젝트에서 Cocoapods를 지우자! (0) | 2017.07.18 |
[SWIFT] String Encoding (0) | 2017.07.14 |