Android 와 iOS 는 Notification의 payload(Push 전송 데이터)에 따라 어떤식으로 동작하는지 간단하게 적어 보았습니다.
1. iOS와 Android 에서 기본 형식으로 Notification 을 노출 시키기 위해서는
{
"notification": {
"title": "테스트입니다.",
"body": "메시지 테스트 내용"
}
}
형식으로 구성을 하면 됩니다.
하지만 이방식으로 Message를 보내면 Notification을 제대로 활용 하기 힘듭니다.
우리가 일반적으로 Push 기능을 사용하는것은 사용자에게 단순하게
Message를 전달하는 목적 뿐만 아니라,
사용자의 편의성을 위해 기능을 담기 때문입니다.
따라서 사용자가 Notification을 활용할 수 있게 하기 위해서는
data를 담아야 하는데 이런경우 payload 구성은 아래와 같습니다.
{
"data" : {
"message" : {
"title" : "tes1t111",
"content": "content",
"imageUrl" : "url"
}
}
}
data 안의 구조는 사용자가 정의하여 Custom하게 구성 하면 되고,
Client 에서는 위의 데이터를 받아 Notification을 구성하고,
사용자에게 기능을 제공하면 됩니다.
여기서 주의 할점은
{
"notification": {
"title": "테스트입니다.",
"body": "메시지 테스트 내용"
}
"data" : {
"message" : {
"title" : "tes1t111",
"content": "content",
"imageUrl" : "url"
}
}
}
이런 형식으로 payload를 구성하면,
Android같은 경우 Background에서
onMessageReceived를 거치지 않고
Notification 의 정보만 노출하게 됩니다.
메시지를 받았을때 Client에서 작업을 따로 할수가 없는것 이지요.
따라서 Background 에서 Push를 받았을때 onMessageReceived 에서 별도의 작업이 필요하다면
notification 을 빼고 아래와 같이 보내면 됩니다.
{
"data" : {
"message" : {
"title" : "tes1t111",
"content": "content",
"imageUrl" : "url"
}
}
}
iOS도 Android와 비슷하지만 Background 에서 별도의 작업및 Notification 을 구성하고 싶다면
아래와 같이 구성하여 보내면 됩니다.
{
"content_available": true,
"data" : {
"message" : {
"title" : "tes1t111",
"content": "content",
"imageUrl" : "url"
}
}
}
그러면 Forground 및 Background 모두
1. func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {}
또는
2. func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {}
를 호출하는데 (1. 번 2. 번 모두 사용할결우 2.번이 호출됨)
여기서 위의 payload 를 받아서 필요한 기능을 구성하면 됩니다.
"content_available": true, <<<< 이부분이 payload에 포함되어야 위의 함수가 호출됩니다.
주의사항: iOS 는 data로만 payload로 구성할경우 App 이 사용자에 의해 Background 에서 제거되거나 terminate 되었을시
알림을 받을 수 없습니다.
data만 Notification 을 구성해야 할 일이 없다면 "notification"에 메시지를 담아서 사용하세요.
'공부방 > iOS' 카테고리의 다른 글
iOS fabric crashlytics install (Step1) (0) | 2019.07.10 |
---|---|
iOS local notification divide (iOS Local Notification 분리) (0) | 2019.07.09 |
iOS Notification Function 기능 정리 (0) | 2019.07.02 |
wkwebview native function call from javascript(WKWebView Javascript에서 iOS 함수 호출) (1) | 2019.06.28 |
iOS Firebase Push Notification Setting (0) | 2019.06.13 |
행복한 코딩을 위하여!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!