iOS12의 Group notifications [1/2]
아마 이번 iOS 12 업데이트에서, 사용자/개발자들이 가장 먼저 체감할 수 있는 점은 Group Notification이 아닐까 싶습니다.
기존의 알림센터는 특별한 규칙 없이 모든 앱의 모든 알림을 보여줬다면, 이번 iOS12부터는 아래의 이미지처럼 앱 별로 자동으로 Group화 해서 보여줍니다.
왼쪽의 이미지는 총 세 개의 앱에서 온 여러개의 알림을 Group화 하여 보여주고 있으며, 그 중 메세지 Group을 tap했을 때는 오른쪽의 이미지와 같이 메세지 목록이 나타납니다.
또한, Group의 최상단에는 가장 최근에 받은 알림이 나타납니다.
그럼 여기서 카카오톡을 상상해 봅시다.
개발자가 별 다른 설정을 하지 않으면 iOS가 앱별로 알림을 Group화 하기 때문에, 수열이에게서 오는 메세지와 여자친구에게서 오는 메세지가 한 Group으로 묶이게 됩니다.
수열이에게서 온 메세지가 여자친구의 메세지를 덮어버려서 확인을 못했네요. 여자친구는 화가 나고, 헤어지고, 평생 솔로로 살다가 독거노인이 되고.. 암울한 미래가 펼쳐집니다.
그건 사용자도, 개발자도, 여자친구도, 수열이도 별로 원하는 결과가 아니겠죠. (제발 그렇다고 해주세요🙏)
그래서 추가된게 `Thread Identifier`입니다.
Thread identifier는 같은 앱이라도, 알림을 다양한 Group으로 분류할 수 있도록 도와줍니다.
즉, 하나의 카카오톡 앱이라도 알림별로 Thred identifier를 설정해주면, 수열이와 여자친구의 메세지들을 각각 Group 지어줄 수 있습니다.
수열이 메세지들의 Thread identifier를 `Suyeol`로, 여자친구 메세지들의 Thread identifier를 `Empty`로 설정하여 사용자에게 전송한다면, 사용자는 아래와 같이 2개로 분류된 알림을 받게 됩니다.
그럼 수열이와의 우정도 영원하고, 여자친구와 헤어질 일도 없고, 결혼에 성공하여 딸 하나 아들 하나 오손도손 행복하게 잘 살겠죠?
그럼, 이 Thread identifier는 어떻게 적용할 수 있을까요?
서버를 통해 Remote notification을 전송한다면, 아래와 같이 APNS payload에 `thread-id`만 추가해주시면 됩니다.
당연히 각 그룹별로 유니크한 값이 들어가야겠죠?
어플리케이션 단에서 Local notification을 전송한다면, 아래와 같이 `UNNotificationContent` 객체에 `threadIdentifier`를 설정하시면 됩니다.
그런데, 잠깐! 혹시 첫번째 이미지에서 이상한 점을 느끼지 못하셨나요?
맞습니다. 각각의 Group마다 알림 하단에 뜨는 설명이 다릅니다.
이런 내용을 `Group Summary`라고 부르며, 애플은 이 또한 customize 가능하게 만들어 주었습니다.
별도의 설정을 하지 않으면, 위 이미지의 Twitter 앱 처럼 `X more notifications`로 나타나게 됩니다.
그럼 위 이미지의 Calendar, Messages 앱 처럼 직접 group summary를 설정하려면 어떻게 해야할까요?
그건 다음 시간에 알아보도록 합시다... 피곤하네요.