메인 콘텐츠로 건너뛰기

개요

확인된 전달은 기기가 OneSignal을 통해 전송된 푸시 알림을 실제로 수신한 시기를 추적합니다. 기기의 OneSignal SDK가 푸시를 수신하면, 알림 ID와 기기의 구독 ID를 포함한 확인 이벤트를 OneSignal로 다시 보냅니다. 이를 통해 어떤 구독이 어떤 알림을 받았는지 정확히 확인할 수 있습니다. OneSignal 대시보드에서 확인된 전달은 메시지 보고서확인됨 (또는 수신됨)으로 표시됩니다. 모든 전달 및 참여 지표에 대해서는 지표 용어집을 참조하세요.
확인된 전달 흐름
확인된 전달은 “전달됨”과 다릅니다. 플랫폼 푸시 서비스(APNs, FCM, ADM, HMS)는 알림이 서비스에 의해 수락되었는지 여부를 보고합니다 — 기기가 실제로 받았는지가 아닙니다. 확인된 전달은 기기 측의 확인입니다.

요구 사항

  • 유료 플랜에서만 사용할 수 있습니다. 플랜 비교.
  • Web SDK 설정 및/또는 모바일 SDK 설정을 완료하세요.
    • 확인된 전달은 기기에 OneSignal SDK가 설치된 경우에만 작동합니다.
    • API만 통해 생성된 구독은 지원되지 않습니다.

플랫폼별 제한 사항

iOS
  • 알림 서비스 확장앱 그룹 설정이 모두 필요합니다.
  • APNs는 오프라인일 때 앱당 하나의 메시지만 유지합니다. 오프라인 상태에서 여러 푸시가 전송되면 최신 푸시만 전달됩니다.
Huawei
  • data Huawei 메시지 유형에만 지원됩니다.
  • message 유형의 경우 Huawei는 자체 대시보드에서만 수신 데이터를 제공합니다.
Web
  • Safari는 확인된 전달을 지원하지 않습니다.

확인된 전달 문제 해결

푸시 알림을 전혀 받지 못하는 경우 먼저 알림이 표시되지 않음을 참조하세요.

iOS

iOS에서 확인된 전달은 두 가지가 함께 작동해야 합니다:
  1. 푸시가 도착했을 때 OneSignal 코드를 실행하는 Notification Service Extension (NSE)
  2. 메인 앱 타겟과 NSE 타겟 간에 데이터를 교환할 수 있도록 공유되는 App Group
둘 중 하나가 누락되거나 잘못 설정된 경우, 기기는 푸시를 수신하지만 OneSignal에 보고하지 않습니다. iOS 설정 확인
1

NSE 타겟이 존재하고 올바른 코드를 가지고 있는지 확인

Xcode에서 프로젝트 타겟 아래에 OneSignalNotificationServiceExtension 타겟이 나열되어 있는지 확인하세요. 존재하지 않으면 iOS SDK 설정의 2단계를 따르세요.NSE의 NotificationService.swift (또는 .m) 파일을 여세요. didReceive(_:withContentHandler:) 내에서 OneSignalExtension.didReceiveNotificationExtensionRequest를 호출해야 합니다. 파일에 아직 Apple의 기본 템플릿 코드가 포함되어 있으면 OneSignal NSE 코드로 교체하세요.
2

NSE에 OneSignalExtension 패키지가 있는지 확인

NSE 타겟 > General > Frameworks and Libraries (또는 Build Phases > Link Binary With Libraries)를 선택하세요. OneSignalExtension이 나열되어 있는지 확인하세요. 메인 앱 타겟은 OneSignalFramework를 사용하지만, NSE 타겟은 OneSignalExtension을 사용해야 합니다 — 이들은 서로 다른 패키지입니다.
3

App Group이 두 타겟 모두에서 올바르게 설정되어 있는지 확인

OneSignal SDK는 App Group을 사용하여 메인 앱과 NSE 간에 데이터를 공유합니다. 두 가지 설정 방법이 있습니다 — 설정에 맞는 것을 선택하세요.
  1. 메인 앱 타겟 > Signing & Capabilities > App Groups를 선택합니다.
  2. App Group을 확인합니다.
App Group이 group.YOUR_MAIN_APP_BUNDLE_ID.onesignal(YOUR_MAIN_APP_BUNDLE_IDGeneral > Identity에서 확인할 수 있는 메인 앱 타겟의 번들 식별자)인 경우 기본 App Group 탭을 따르세요. 그렇지 않으면 사용자 지정 App Group 탭을 따르세요.
  1. NSE 타겟 > Signing & Capabilities > App Groups를 선택합니다.
  2. 동일한 App Group이 나열되어 있는지 확인합니다. 없으면 + Capability > App Groups를 통해 추가하고 동일한 그룹을 선택합니다.
흔한 실수는 메인 앱의 번들 식별자 대신 NSE의 번들 식별자를 사용하는 것입니다:
  • 올바름: group.YOUR_MAIN_APP_BUNDLE_ID.onesignal
  • 잘못됨: group.YOUR_MAIN_APP_BUNDLE_ID.OneSignalNotificationServiceExtension.onesignal
메인 앱 타겟과 NSE 타겟은 동일한 App Group 식별자를 가져야 합니다.
빌드 설정에 .xcconfig 파일을 사용하는 경우 App Group이 해당 파일에서 재정의되거나 생략되지 않는지 확인하세요.
4

최소 배포 타겟이 일치하는지 확인

NSE 타겟 > General > Minimum Deployments를 선택합니다. 이 값은 메인 앱 타겟의 최소 배포와 일치해야 합니다. 불일치하면 특정 OS 버전에서 NSE가 실행되지 않을 수 있습니다.
5

"Copy only when installing" 체크 해제

메인 앱 타겟 > Build Phases > Embed App Extensions를 선택합니다. “Copy only when installing”이 체크 해제되어 있는지 확인합니다. 체크되어 있으면 NSE가 개발 빌드 중에 포함되지 않아 테스트 시 실행되지 않습니다.
6

Info.plist의 NSExtension 값 확인

NSE 타겟 > Info 탭을 선택하고 NSExtension 키를 확장합니다. 다음이 포함되어 있는지 확인하세요:
<key>NSExtensionPointIdentifier</key>
<string>com.apple.usernotifications.service</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).NotificationService</string>
NSE가 Objective-C로 작성된 경우 $(PRODUCT_MODULE_NAME).NotificationService 대신 NotificationService를 사용하세요.
7

mutable-content가 설정되어 있는지 확인

OneSignal은 푸시 페이로드에 자동으로 mutable-content: 1을 설정하여 iOS가 NSE를 호출하도록 지시합니다. REST API를 통해 푸시를 보내는 경우 mutable_content: false를 명시적으로 설정하지 않았는지 확인하세요. mutable-content 없이는 iOS가 NSE를 실행하지 않아 확인된 전달이 트리거될 수 없습니다.
8

NSE가 실행되고 있는지 테스트

OneSignal 호출 전 didReceive 내에 이 줄을 임시로 추가합니다:
bestAttemptContent.body = "[Modified] " + bestAttemptContent.body
자신에게 테스트 푸시를 보냅니다. 알림 본문이 [Modified]로 시작하면 NSE가 올바르게 실행되고 있습니다. 그렇지 않으면 위 단계를 다시 확인하세요 — NSE가 호출되지 않고 있습니다. 테스트 후 이 줄을 제거하세요.Xcode Console 로그를 사용한 고급 NSE 디버깅에 대해서는 iOS Notification Service Extension 디버깅을 참조하세요.

Android

Web

  • Safari는 지원되지 않습니다.
  • 다른 브라우저의 경우 v16 SDK로의 마이그레이션이 완료되었는지 확인하세요:
    • 올바른 SDK 초기화:
      <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
      
    • 올바른 Service Worker 참조:
      importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
      

FAQ

확인된 전달 수치가 낮거나 누락된 이유는 무엇인가요?

가장 일반적인 원인은 설정 문제(특히 iOS), 비활성 기기, 플랫폼 제한 사항입니다.
  1. iOS 잘못된 구성: 알림 서비스 확장 또는 App Group이 누락되었거나 올바르지 않습니다. 위의 iOS 확인된 전달 문제 해결을 참조하세요.
  2. 비활성 또는 버려진 기기: 오프라인이거나 더 이상 사용되지 않는 기기는 푸시를 수신하거나 확인된 전달 이벤트를 보내지 않습니다. 아래의 비활성 기기를 어떻게 처리하나요?를 참조하세요.
  3. 플랫폼 제한 사항: Huawei message 유형과 Safari는 확인된 전달을 지원하지 않습니다.
  4. Android 강제 종료: 일부 기기 제조업체는 앱을 스와이프하여 닫는 것을 강제 종료로 처리하여 SDK 이벤트가 중지됩니다. 모바일 푸시 표시되지 않음 가이드를 참조하세요.

비활성 기기를 어떻게 처리하나요?

오프라인이거나 버려진 기기는 푸시 알림을 수신하거나 확인된 전달 이벤트를 보내지 않습니다. 이는 사용자가 기기를 교체하거나 버릴 때 일반적입니다. 비활성 사용자를 다시 참여시키려면:
  • Audience Activity를 사용하여 전달을 확인하지 않은 사용자에게 다시 보내세요.
  • Last Session을 기반으로 세그먼트를 만드세요 (예: 90일 이상 비활성).
    • 재참여 Journey와 결합하여 되찾아 오세요.
    • 정기적으로 비활성 사용자를 타겟팅하여 연결할 수 없는 기기를 정리하세요.
OneSignal이 구독 상태를 업데이트하는 방법에 대한 자세한 내용은 푸시 구독 상태는 언제 업데이트되나요?를 참조하세요.

확인됨으로 표시되지만 내 기기에 나타나지 않는 이유는 무엇인가요?

확인된 전달 이벤트는 기기가 푸시 페이로드를 수신했음을 의미합니다. 드물게 알림이 표시되지 않을 수 있습니다. 가능한 원인:
도움이 필요하신가요?지원 팀과 채팅하거나 support@onesignal.com으로 이메일을 보내주세요.다음을 포함해 주세요:
  • 발생한 문제의 세부 정보 및 재현 단계(가능한 경우)
  • OneSignal 앱 ID
  • External ID 또는 Subscription ID(해당하는 경우)
  • OneSignal 대시보드에서 테스트한 메시지의 URL(해당하는 경우)
  • 관련 로그 또는 오류 메시지
기꺼이 도와드리겠습니다!