Jiwift

[iOS/Swift] Notification Service Extension이 작동하지 않을 때(Not working) 해결법 본문

iOS Dev/iOS

[iOS/Swift] Notification Service Extension이 작동하지 않을 때(Not working) 해결법

지위프트 2024. 8. 16. 11:31
반응형

예시 이미지

 Notification Service Extension이 작동하지 않을 때 확인해야 하는 몇 가지 사항들을 정리하도록 하겠습니다. 우선 해당 Extension은 앱에서 받은 Push의 내용을 수정하기 위해서 사용합니다. 

 

예시 사용법들은 Node 환경 Firebase로 테스트하고 작성되었습니다.

 


 

1. Extension 번들이 제대로 등록되었는지 확인

예시 이미지

- Xcode에서 Extension을 추가하면 Bundle identifier가 설정되었을 겁니다. 하지만 그게 애플 개발자 센터 Identifiers에 등록되지 않았을 수 있습니다. 확인을 통하여 추가를 해주세요. 

- 직접 추가하거나 아카이브 후 앱스토어 커넥트로 업로드하면 자동으로 가능합니다.

 

2. Push를 전송하는 서버와 앱과 연동이 제대로 되었는지 확인

- 서버에서 보내는 Push가 앱으로 들어오지 않는 상황일 수 있습니다. 등록된 Identifier, Key, APNS, Firebase 등을 확인해 주세요.

- Extension이 동작하지 않아도 Push가 들어오고 있다면 일단 연동을 제대로 되어있는 겁니다.

 

3. mutable-content 확인

- 서버에서 Push를 전송할 때 mutable-content 값을 추가하고 1로 변경해야 합니다.

aps: {
  'mutable-content': 1, 
}

 

4. Push에 Title, body와 같은 필드가 있는지 확인

- 해당 필드가 없으면 AppDelegate에서 작동해도 Extension가 동작하지 않습니다.

- Firebase면 Nofication 필드, APNs라면 Alert 필드를 확인하세요.

- 내용이 적어도 스페이스 하나 이상은 있어야 효과가 있습니다.

// 메시지 생성 예시 1
const message = {
  notification: {
    title: 'FCM Topic UnSubscribe', // 임의로 내용을 추가함
    body: 'TestTestTest', // 임의로 내용을 추가함
  },
  data: {
    payload: JSON.stringify(payloadJson)
  },
  apns: {
    payload: {
      aps: {
        sound: 'default', // 시스템 기본 사운드 적용 
        'mutable-content': 1, 
      }
    }
  }
};

// 메시지 생성 예시 2
const message = {
  data: {
    payload: JSON.stringify(payloadJson)
  },
  apns: {
    payload: {
      aps: {
        alert: " ", // 임의로 내용을 추가함
        sound: 'default', // 시스템 기본 사운드 적용 
        'mutable-content': 1, 
      }
    }
  }
};

 

 

5. Minimum Deployments 버전이 테스트하는 단말기와 동일한지 확인

- Extension을 추가하면 기본적으로 최신 OS로 설정되는 것 같습니다. 테스트 단말기가 지원 버전보다 낮으면 작동하지 않습니다.

- Xcode에서 지원버전보다 낮은 단말기를 연결해도 빌드시 에러가 발생하지 않기 때문에 뒤늦게 발견될 수 있습니다.

 

 

 

 

 

반응형