ARCHIVES

태그

신고하기

상단 메뉴 페이지

기본 콘텐츠로 건너뛰기

[iOS, Android] 3부. 업무에 적용 가능한 푸시 전송 방법


안녕하세요 치우 입니다.


1부. 푸시 전송 테스트 결과.
2부. 구글 파이어베이스를 통한 API 푸시 전송.


푸시 전송에 대해 현재 업무에 적용한 내용을 공유 합니다.
일반적으로 알고있는 지식은 

안드로이드 폰은 푸시 팝업 디자인을 커스텀 할 수 있고,
아이폰은 커스텀 할 수 없습니다.

그런데 조금 더 자세히 들어가면,
파이어 베이스를 통한 푸시를 할 때,
안드로이드는 아래와 같이 보내면 푸시 화면을 커스텀 할 수 없고
{
"message":{
"notification": {
"title": "타이틀",
"body": "내용"
}
}

커스텀 할 수 있도록  noticication 을 사용하지 않고 보내야 합니다.
{
"message":{
"data": {
"title": "타이틀",
"body": "내용"
}
}

이유는, 안드로이드에서 notification 해당 규칙을 지킬경우
Background 모드에서 서비스로 푸시 수신이 오지 않기 때문입니다.

그리고 아이폰은 OS 규칙대로 보내야 하기 때문에,
첫번째처럼 notification 이 필요 합니다.

...

그래서 원래는 title, body만 보내면 되는 서버 메세지를 
아이폰, 안드로이드가 원하는 형태로 인식 할 수 있도록.
아래와 같이 변형 하여 보내게 되었죠.

{
"message":{
"token" : "토큰",
"apns": {
"payload": {
"aps": {
"alert": {
"title" : "제목입니다",
"body" : "내용입니다"
},
"badge" : 0,
"mutable-content": 1
},
"image": "이미지 주소"
}
},
"data" : {
"title" : "제목입니다",
"body": "내용입니다",
"image":"이미지 주소",
"systemType":"06c01345804b4ef38da9d565c80a921b",
"messageType": "2734cf7558534d8aa40550f2afc0f9ca",
"createDate":"2020-11-09 11:07:34",
"receiver":"8D8051783E0A457CA230B4E3D616FD0C"
}
}
}

이 규칙은 v1버전 HTTP 전송방법 에 자세히 나와 있습니다.
이렇게 만들어 보내면, 

아이폰은 apns 에 의해 푸시가 보내지고,
안드로이드는 data를 읽어서 커스텀 하게 됩니다.

댓글