본문 바로가기
★ 프로젝트 + 트러블 슈팅 ★

[FCM] AOS / IOS 푸시 메시지 미수신 및 액션링크 미작동 이슈

by 리승우 2024. 9. 14.

이슈 내용

FCM deprecated API 이슈를 위해 FCM Admin SDK로 기능을 변경하였으나, AOS 혹은 IOS에서 푸시 메시지가 미수신되고, 푸시 메지시를 눌렀을 때 연동되도록 의도하는 주소지로 이동이 안되는 이슈가 발생하였다.

 

이슈 파악

개발기간이 짧아, 시간을 지체시킬 수 없어 FCM은 모바일에서 관리하고 있으니, 모바일 팀측에 아래와 같은 사항을 곧바로 문의하였다.

 

* 기본 전제 : 현재 백엔드 팀에서는 FCM Admin SDK를 사용하여 요청을 전달할 예정임

1. 보내는 파라미터에 따라, AOS에서는 수신이 되나 IOS에서는 수신이 안되는 발생하고 있음

2. AOS 및 IOS에서, 유저가 푸시 메시지를 클릭했을 때 의도하는 페이지로 연동되지 않고 있음

 

=> 어떤 파라미터에 어떤 값을 줘야하는 특정 조건이 별도로 있는 걸까요?

 

문의 결과

우선 공식문서 내용은 아래와 같다.

https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages?hl=ko#Notification

 

sendMulticast() 메서드 인자에 포함되는 Message에서 해당 필드를 가지고 있는데, 여기서 AOS/IOS를 제어한다.

 

현재 사용하고 있는 코드는 아래와 같았다. 

$message = CloudMessage::fromArray([
    'token' => $deviceToken,
    'notification' => [
        'title' => $singleSendRequest->getTitle(),
        'body' => $singleSendRequest->getMessage(),
        'click_action' => $singleSendRequest->getScheme()
    ],
    'webpush' => [
        'fcm_options' => [
            'link' => $singleSendRequest->getScheme()
        ]
    ],
    'data' => $singleSendRequest->getData(),
]);

 

모바일팀 측에서는 아래와 같이 답변했다.

- 현재 별도로 커스텀을 해서, 서버측에서 특정 필드값을 필수로 보내야만 페이지가 연동되게 해놓았다.
(확인 결과 FCM Admin SDK와 무관하게 백엔드단에서 특정 필드를 보내면 됨, 해당 값은 data필드에 속하게 하면 될 듯 => data는 부가적인 정보를 담는 곳임)

 

- notification 필드를 Message에 포함할 경우, AOS에서는 메시지를 받을 수는 있으나, 링크를 탈 수 없다. 
(notification만 타기 때문에, AOS에서는 FCM 서버 연결 이후 행동되는 링크 이동이 불가능하다고 함)

 

- IOS는 왜 연동이 안 되는 건지 아직 모르겠다고 함

 

이슈 해결

아직 무엇을 바꿔야할지 명확하게 보이진 않았으나,
우리팀의 팀장님이 아래와 같은 코드로 테스트 해주셨을 때 AOS/IOS에서 정상작동하게 되었다...

 

왜 되는지 확인한 결과 아래와 같이 해석된다.

 

data 필드 >> AOS 및 IOS에서 읽고 있는 정보, 해당 필드에 연동 링크 데이터 및 title, message 등등이 모두 들어가 있다.

apns 필드 >> IOS에서 전용 필드, 해당 내용을 IOS에서 읽는다.

 

AOS 사용 필드 >> data 필드 사용 

IOS 사용 필드 >> data, apns 필드 사용

'data' => $data,
'apns' => [
    'payload' => [
        'aps' => [
            'alert' => [
                'title' => $title,
                'body' => $body,
            ],
        ],
    ],
]

 

댓글