1. 푸시 수신 시 백그라운드 상태 액션

 

푸시 메시지를 받아 앱을 실행하는 것 말고, 앱이 실행되고 있지 않은 상태에서 알림바에서 즉시 특정 작업, 승인/거부 등 간단한 작업을 수행할 수 있다. Android에서는 기본적으로 커스텀 액션을 넣을 수 있게 되어 있는데, iOS에서는 Category라는 개념의 메시지 추가를 통해 진행된다.

 

 

>> 참조: developer.apple.com/documentation/usernotifications/declaring_your_actionable_notification_types

 

Apple Developer Documentation

 

developer.apple.com

클래스 차원에서는 UNNotificationCategoryUNNotificationAction를 사용하면 된다. (iOS 10.0 이전에는 UIUserNotificationCategory, UIUserNotificationAction/UIMutableNotificationAction을 사용했었지만 10.0 이후 다 없어지고 바뀌었다.)

 

 

이것을 위해 송신측(서버)에서도 푸시 메시지에 한 가지 추가 작업이 필요하다.

 

APNS를 직접 사용할 때는 "category",

FCM을 사용할 때는 "click_action"을 notification 메시지에 추가해 주면 된다.

 

>> 참조: firebase.google.com/docs/cloud-messaging/concept-options?hl=ko

 

FCM 메시지 정보  |  Firebase

Firebase 클라우드 메시징(FCM)은 다양한 메시징 옵션과 기능을 제공합니다. 이 페이지의 정보는 다양한 유형의 FCM 메시지에 관한 이해를 돕고 FCM으로 구현할 수 있는 기능을 소개하기 위한 내용입

firebase.google.com

 

단, iOS에서 앱 실행 없이 백그라운드로 이 기능을 활용할 때, 만약 외부 통신, 즉 서버를 호출하는 경우라면 반드시 추가로 해 주어야 하는 작업이 있다. 바로...... Background fetch를 활성화하는 것!

 

>> 참조: swifteyes.blogspot.com/2016/09/ios-multitasking-background-fetch.html

 

iOS Multitasking, Background fetch 개념

Swift 언어를 좋아하는 개발자의 블로그 입니다.

swifteyes.blogspot.com

Background Modes를 켜는 것 만으로는 안 된다. 반드시 하위의 Background fetch도 체크해 주어야 한다.

안 그러면 절대 서버 호출이 되지 않는다. iOS 자체 내부 작업은 다 되지만 외부 통신 작업은 모조리 실패한다.

(골 때리는 것은... 이 경우에도 USB 디버깅으로 iPhone을 연결해서 하면 잘 된다... 진짜 골 때린다....)

 

 

 

2. 앱 간 데이터 공유

 

Xcode 앱 개발 시 동일한 팀(team) ID로 여러 앱을 만들 수 있다. 예를 들어 KeyChain 같은 암호화 저장소를 이용해서 동일한 아이디, 패스워드 등을 저장해 두었다가 여러 앱에서 활용할 수 있다. 단, 그러기 위해서는 Keychain Sharing을 켜야 한다.

 

>> 참조1: firebase.google.com/docs/auth/ios/single-sign-on?hl=ko

 

공유된 iOS 키체인으로 앱 간 인증 사용 설정  |  Firebase

iOS의 여러 앱이나 확장 프로그램에서 인증 상태를 공유하려면 Keychain Services를 사용하여 공유 키체인에 인증 상태를 저장하고 이 공유 키체인을 사용하도록 앱을 구성합니다. 이렇게 인증 상태

firebase.google.com

 

>> 참조2: codinggom.github.io/Keychain-sharing/

 

[Programming] iOS 앱간 데이터 공유 Keychain sharing (키체인 쉐어링)

메모리 단편화에 관하여

CodingGom.github.io

Keychain Sharing을 켜지 않고 앱을 만들면, 최초 앱에서 저장한 설정을 다른 앱에서 읽으려고 할 때

"User interaction is not allowed" 오류가 발생한다.

 

 

끝.

 

 



Posted by 떼르미
,


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]