개요
확인된 전달은 기기가 OneSignal을 통해 전송된 푸시 알림을 실제로 수신한 시기를 추적합니다. 기기의 OneSignal SDK가 푸시를 수신하면, 알림 ID와 기기의 구독 ID를 포함한 확인 이벤트를 OneSignal로 다시 보냅니다. 이를 통해 어떤 구독이 어떤 알림을 받았는지 정확히 확인할 수 있습니다. OneSignal 대시보드에서 확인된 전달은 메시지 보고서에 확인됨 (또는 수신됨)으로 표시됩니다. 모든 전달 및 참여 지표에 대해서는 지표 용어집을 참조하세요.
확인된 전달은 “전달됨”과 다릅니다. 플랫폼 푸시 서비스(APNs, FCM, ADM, HMS)는 알림이 서비스에 의해 수락되었는지 여부를 보고합니다 — 기기가 실제로 받았는지가 아닙니다. 확인된 전달은 기기 측의 확인입니다.
요구 사항
- 유료 플랜에서만 사용할 수 있습니다. 플랜 비교.
- Web SDK 설정 및/또는 모바일 SDK 설정을 완료하세요.
- 확인된 전달은 기기에 OneSignal SDK가 설치된 경우에만 작동합니다.
- API만 통해 생성된 구독은 지원되지 않습니다.
플랫폼별 제한 사항
iOS- 알림 서비스 확장 및 앱 그룹 설정이 모두 필요합니다.
- APNs는 오프라인일 때 앱당 하나의 메시지만 유지합니다. 오프라인 상태에서 여러 푸시가 전송되면 최신 푸시만 전달됩니다.
dataHuawei 메시지 유형에만 지원됩니다.message유형의 경우 Huawei는 자체 대시보드에서만 수신 데이터를 제공합니다.
- Safari는 확인된 전달을 지원하지 않습니다.
확인된 전달 문제 해결
푸시 알림을 전혀 받지 못하는 경우 먼저 알림이 표시되지 않음을 참조하세요.iOS
iOS에서 확인된 전달은 두 가지가 함께 작동해야 합니다:- 푸시가 도착했을 때 OneSignal 코드를 실행하는 Notification Service Extension (NSE)
- 메인 앱 타겟과 NSE 타겟 간에 데이터를 교환할 수 있도록 공유되는 App Group
NSE 타겟이 존재하고 올바른 코드를 가지고 있는지 확인
Xcode에서 프로젝트 타겟 아래에 OneSignalNotificationServiceExtension 타겟이 나열되어 있는지 확인하세요. 존재하지 않으면 iOS SDK 설정의 2단계를 따르세요.NSE의
NotificationService.swift (또는 .m) 파일을 여세요. didReceive(_:withContentHandler:) 내에서 OneSignalExtension.didReceiveNotificationExtensionRequest를 호출해야 합니다. 파일에 아직 Apple의 기본 템플릿 코드가 포함되어 있으면 OneSignal NSE 코드로 교체하세요.NSE에 OneSignalExtension 패키지가 있는지 확인
NSE 타겟 > General > Frameworks and Libraries (또는 Build Phases > Link Binary With Libraries)를 선택하세요.
OneSignalExtension이 나열되어 있는지 확인하세요. 메인 앱 타겟은 OneSignalFramework를 사용하지만, NSE 타겟은 OneSignalExtension을 사용해야 합니다 — 이들은 서로 다른 패키지입니다.App Group이 두 타겟 모두에서 올바르게 설정되어 있는지 확인
OneSignal SDK는 App Group을 사용하여 메인 앱과 NSE 간에 데이터를 공유합니다. 두 가지 설정 방법이 있습니다 — 설정에 맞는 것을 선택하세요.
- 메인 앱 타겟 > Signing & Capabilities > App Groups를 선택합니다.
- App Group을 확인합니다.
group.YOUR_MAIN_APP_BUNDLE_ID.onesignal(YOUR_MAIN_APP_BUNDLE_ID는 General > Identity에서 확인할 수 있는 메인 앱 타겟의 번들 식별자)인 경우 기본 App Group 탭을 따르세요. 그렇지 않으면 사용자 지정 App Group 탭을 따르세요.- 기본 App Group - group.YOUR_MAIN_APP_BUNDLE_ID.onesignal
- 사용자 지정 App Group
- NSE 타겟 > Signing & Capabilities > App Groups를 선택합니다.
- 동일한 App Group이 나열되어 있는지 확인합니다. 없으면 + Capability > App Groups를 통해 추가하고 동일한 그룹을 선택합니다.
- 올바름:
group.YOUR_MAIN_APP_BUNDLE_ID.onesignal - 잘못됨:
group.YOUR_MAIN_APP_BUNDLE_ID.OneSignalNotificationServiceExtension.onesignal
최소 배포 타겟이 일치하는지 확인
NSE 타겟 > General > Minimum Deployments를 선택합니다. 이 값은 메인 앱 타겟의 최소 배포와 일치해야 합니다. 불일치하면 특정 OS 버전에서 NSE가 실행되지 않을 수 있습니다.
"Copy only when installing" 체크 해제
메인 앱 타겟 > Build Phases > Embed App Extensions를 선택합니다. “Copy only when installing”이 체크 해제되어 있는지 확인합니다. 체크되어 있으면 NSE가 개발 빌드 중에 포함되지 않아 테스트 시 실행되지 않습니다.
Info.plist의 NSExtension 값 확인
NSE 타겟 > Info 탭을 선택하고 NSE가 Objective-C로 작성된 경우
NSExtension 키를 확장합니다. 다음이 포함되어 있는지 확인하세요:$(PRODUCT_MODULE_NAME).NotificationService 대신 NotificationService를 사용하세요.mutable-content가 설정되어 있는지 확인
OneSignal은 푸시 페이로드에 자동으로
mutable-content: 1을 설정하여 iOS가 NSE를 호출하도록 지시합니다. REST API를 통해 푸시를 보내는 경우 mutable_content: false를 명시적으로 설정하지 않았는지 확인하세요. mutable-content 없이는 iOS가 NSE를 실행하지 않아 확인된 전달이 트리거될 수 없습니다.NSE가 실행되고 있는지 테스트
OneSignal 호출 전 자신에게 테스트 푸시를 보냅니다. 알림 본문이
didReceive 내에 이 줄을 임시로 추가합니다:[Modified]로 시작하면 NSE가 올바르게 실행되고 있습니다. 그렇지 않으면 위 단계를 다시 확인하세요 — NSE가 호출되지 않고 있습니다. 테스트 후 이 줄을 제거하세요.Xcode Console 로그를 사용한 고급 NSE 디버깅에 대해서는 iOS Notification Service Extension 디버깅을 참조하세요.Android
- 알림이 표시되지 않는 경우: 모바일 푸시 문제 해결을 참조하세요.
- 알림은 표시되지만 확인된 전달이 누락된 경우: 사용자 지정 Android 서비스 확장이 차단하고 있을 수 있습니다. Android 서비스 확장 가이드를 확인하세요.
Web
- Safari는 지원되지 않습니다.
- 다른 브라우저의 경우 v16 SDK로의 마이그레이션이 완료되었는지 확인하세요:
- 올바른 SDK 초기화:
- 올바른 Service Worker 참조:
- 올바른 SDK 초기화:
FAQ
확인된 전달 수치가 낮거나 누락된 이유는 무엇인가요?
가장 일반적인 원인은 설정 문제(특히 iOS), 비활성 기기, 플랫폼 제한 사항입니다.- iOS 잘못된 구성: 알림 서비스 확장 또는 App Group이 누락되었거나 올바르지 않습니다. 위의 iOS 확인된 전달 문제 해결을 참조하세요.
- 비활성 또는 버려진 기기: 오프라인이거나 더 이상 사용되지 않는 기기는 푸시를 수신하거나 확인된 전달 이벤트를 보내지 않습니다. 아래의 비활성 기기를 어떻게 처리하나요?를 참조하세요.
- 플랫폼 제한 사항: Huawei
message유형과 Safari는 확인된 전달을 지원하지 않습니다. - Android 강제 종료: 일부 기기 제조업체는 앱을 스와이프하여 닫는 것을 강제 종료로 처리하여 SDK 이벤트가 중지됩니다. 모바일 푸시 표시되지 않음 가이드를 참조하세요.
비활성 기기를 어떻게 처리하나요?
오프라인이거나 버려진 기기는 푸시 알림을 수신하거나 확인된 전달 이벤트를 보내지 않습니다. 이는 사용자가 기기를 교체하거나 버릴 때 일반적입니다. 비활성 사용자를 다시 참여시키려면:- Audience Activity를 사용하여 전달을 확인하지 않은 사용자에게 다시 보내세요.
- Last Session을 기반으로 세그먼트를 만드세요 (예: 90일 이상 비활성).
- 재참여 Journey와 결합하여 되찾아 오세요.
- 정기적으로 비활성 사용자를 타겟팅하여 연결할 수 없는 기기를 정리하세요.
확인됨으로 표시되지만 내 기기에 나타나지 않는 이유는 무엇인가요?
확인된 전달 이벤트는 기기가 푸시 페이로드를 수신했음을 의미합니다. 드물게 알림이 표시되지 않을 수 있습니다. 가능한 원인:- 알림 놓침: 테스트 구독 찾기 및 설정을 통해 자신에게 테스트 푸시를 보내 확인하세요.
- iOS 집중 모드: “방해 금지”, “수면” 또는 기타 집중 모드는 알림을 지연하거나 그룹화합니다. 그룹화된 알림을 보지 않고 닫았을 수 있습니다.
- 표시를 억제하는 앱 코드:
- 포그라운드 라이프사이클 리스너 또는 Notification Service Extension의
event.preventDefault()는 알림 표시를 중지합니다. removeDeliveredNotifications(withIdentifiers:)또는removeAllDeliveredNotifications()호출은 알림이 도착한 후 제거합니다.
- 포그라운드 라이프사이클 리스너 또는 Notification Service Extension의
- 푸시 페이로드 설정:
priority가 높음으로 설정되어 있는지 확인하세요. 푸시 우선순위를 참조하세요.collapse_id는 동일한 ID를 사용하여 이전 푸시를 새 푸시로 교체합니다.
도움이 필요하신가요?지원 팀과 채팅하거나
support@onesignal.com으로 이메일을 보내주세요.다음을 포함해 주세요:- 발생한 문제의 세부 정보 및 재현 단계(가능한 경우)
- OneSignal 앱 ID
- External ID 또는 Subscription ID(해당하는 경우)
- OneSignal 대시보드에서 테스트한 메시지의 URL(해당하는 경우)
- 관련 로그 또는 오류 메시지