-
[iOS] APNs 뜯어보기(4) - 서버에서 푸시알림 보내기ios/ios 2024. 1. 23. 16:45반응형
서버에서 앱으로 푸시 알림을 보낼 때는 밑에 사진과 같이 사용자에게 다양한 방법으로 보낼 수 있습니다.
이때 보낼 수 있는 용량은 정해져 있는데 VoIP(Voice over Internet Protocol) 알림의 경우는 최대 5KB, 나머지 다른 원격 알림의 경우는 최대 4KB의 용량이 정해져 있습니다.
서버에서 APNs을 통해서 앱에 푸시 알림을 보내기 위해서는 4가지가 있어야 합니다.
- APNs에 푸시알림을 보낼 서버
- Apple 푸시 알림 서비스(APNs)
- 사용자의 장치 (디바이스 토큰)
- 사용자의 기기에서 실행되는 앱
서버에서 APNs에 푸시 알림을 어떤 방식으로 어떤 내용을 보낼지 알려주기 위해서는 아래 코드처럼 json Payload을 보내야 합니다.
{ "aps" : { "alert" : { "title" : "Game Request", "subtitle" : "Five Card Draw", "body" : "Bob wants to play poker" }, "category" : "GAME_INVITATION" }, "gameID" : "12345678" }
- alert : 푸시 알림의 메시지를 설정. "title"과 "body"라는 하위 키를 가진 딕셔너리를 사용하여 푸시 알림의 제목과 본문 메시지를 지정
- badge : 푸시 알림이 도착했을 때 앱 아이콘에 표시될 뱃지 수를 설정
- sound : 푸시 알림이 도착했을 때 재생될 사운드를 설정
- category : 푸시 알림과 연결된 액션 카테고리를 설정. 액션 카테고리는 푸시 알림을 처리하는 동작을 지정하는 데 사용.
(ex. 푸시 알림의 버튼을 누르면 특정 액션을 수행하도록 지정할 수 있음) - content-available : 백그라운드 푸시 알림을 위해 설정되는 값으로, 앱이 백그라운드에서 작업을 수행해야 할 경우 1로 설정.
이를 통해 백그라운드 상태에서 새로운 데이터를 가져오거나 업데이트를 수행할 수 있음.
json payload와 함께 header 작성 예시 입니다.
- :method : GET, POST, PUT, DELETE 등의 메서드를 지정
- :scheme : "http" 또는 "https"와 같은 값을 작성
- :path : 디바이스의 경로를 작성
- authorization : p8의 문자열 값
- apns-id: 푸시 알림을 구분하는 고유 식별자
- apns-expiration: 푸시 알림의 유효 기간을 설정하는 값으로, 해당 시간 이후에는 푸시 알림이 전송되지 않음
- apns-priority: 푸시 알림의 전송 우선순위를 설정하는 값으로, 10 또는 5 값을 가짐. (iOS 13 +)
- apns-topic: 푸시 알림을 전송하는 앱의 Bundle ID를 지정
- apns-push-type: 푸시 알림의 유형을 지정하는 값으로, "alert", "background" 중 하나를 선택.
(iOS 13 이후에서 사용 가능)
서버를 직접 구현해서 테스트할 수 없다면 애플에서 제공한 Push Notification Console에서 푸시 알림을 테스트할 수 있습니다.
https://developer.apple.com/notifications/push-notifications-console/
Push Notifications Console - Notifications - Apple Developer
The new Push Notifications Console makes it easy to send test notifications to Apple devices through the Apple Push Notification service (APNs)
developer.apple.com
사진처럼 payload, header, deviceToken 등을 작성하여 사용자앱에 푸시 알림을 테스트 해볼 수 있습니다.
테스트 결과화면입니다.
참고
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server
Setting up a remote notification server | Apple Developer Documentation
Generate notifications and push them to user devices.
developer.apple.com
Generating a remote notification | Apple Developer Documentation
Send notifications to the user’s device with a JSON payload.
developer.apple.com
반응형'ios > ios' 카테고리의 다른 글
[iOS] Clean Architecture + MVVM-C (1) (0) 2024.03.09 [iOS] Coordinator 패턴 (1) 2024.02.05 [iOS] APNs 뜯어보기(3) - 호출 순서 (0) 2023.11.17 [iOS] APNs 뜯어보기(2) - p8토큰 (0) 2023.10.28 [iOS] APNs 뜯어보기(1) - APNs란? (0) 2023.07.08