메인 콘텐츠로 건너뛰기

개요

VoIP 푸시 알림은 Apple에서 표준 푸시 알림과 다르게 처리됩니다. 이러한 플랫폼 제약으로 인해 OneSignal은 VoIP 알림 전송을 지원하지만 VoIP 토큰 등록은 관리하지 않습니다. 다음을 수행해야 합니다:
  • Apple PushKit을 사용하여 직접 VoIP 토큰 등록
  • VoIP 전용 APNs 인증서 업로드
  • OneSignal API를 사용하여 토큰 등록 및 알림 전송
OneSignal은 VoIP(PushKit) 토큰을 자동으로 등록하거나 갱신하지 않습니다. API를 사용하여 OneSignal에 VoIP 토큰을 수동으로 등록해야 합니다.

플랫폼 차이점 한눈에 보기

플랫폼VoIP 푸시 지원 여부작동 방식
iOS✅ 예Apple PushKit 및 VoIP APNs 인증서 사용
Android❌ 아니오통화 스타일 동작을 시뮬레이션하기 위해 데이터 전용 푸시 사용

크로스 플랫폼 통화 앱을 구축하는 경우 플랫폼별로 다른 접근 방식을 사용하게 됩니다.

Android: VoIP 스타일 동작 시뮬레이션 (진정한 VoIP 아님)

Android는 VoIP 푸시 알림을 지원하지 않습니다. Apple PushKit과 동등한 기능이 없습니다. 대신 Android 통화 앱은 다음을 사용하여 VoIP 동작을 시뮬레이션합니다:
  • 데이터 전용 푸시 알림
  • 포그라운드 서비스
  • 맞춤형 통화 스타일 UI
OneSignal의 일반 Android 푸시 지원과 네이티브 Android API를 결합하여 이를 달성할 수 있습니다. 권장 접근 방식:
  • 데이터 전용 알림 전송
  • 앱에서 다음과 같이 처리:
    • 포그라운드 서비스 시작
    • 통화 UI 액티비티 실행
    • 맞춤형 수신 통화 알림 표시
알림 렌더링을 가로채고 완전히 제어하려면 Android의 Notification Service Extension을 사용하세요. 유용한 리소스:
Android 설정은 OneSignal 전용이 아닙니다. OneSignal은 푸시 페이로드만 전달하며 앱이 통화 동작을 처리합니다.

iOS: 진정한 VoIP 푸시 알림 전송

iOS에서 VoIP 알림은 Apple PushKit을 사용하며 표준 푸시 알림과 다른 특수 전달 규칙이 있습니다. OneSignal에서 iOS VoIP가 작동하는 방식: iOS VoIP 알림의 경우:
  1. 앱이 PushKit을 사용하여 VoIP 토큰을 등록합니다
  2. OneSignal에 VoIP Services APNs 인증서를 업로드합니다
  3. API를 사용하여 OneSignal에 VoIP 토큰을 등록합니다
  4. apns_push_type_override: “voip”를 사용하여 VoIP 푸시를 전송합니다
Apple이 VoIP 푸시를 다르게 처리하므로 OneSignal도 이를 별도의 앱 구성으로 처리해야 합니다.

1. PushKit을 사용하여 VoIP 토큰 등록

Apple PushKit 프레임워크를 사용하여 VoIP 알림을 등록하고 VoIP 토큰을 받습니다.
  • 앱에서 PushKit 구현
  • Apple이 교체할 때 VoIP 토큰 저장 및 갱신
  • Apple의 VoIP 정책을 면밀히 준수
Apple 리소스:

2. VoIP 사용자를 위한 새 OneSignal 앱 생성

두 개의 별도 OneSignal 앱을 유지해야 합니다:
  • 기본 푸시 앱: 표준 푸시 알림용
  • VoIP 앱: VoIP 전용 알림용
두 앱 모두:
  • 동일한 iOS 번들 ID 사용
  • 동일한 네이티브 iOS 앱과 연결되어야 함

3. VoIP Services Certificate 업로드

VoIP OneSignal 앱에서:
  • VoIP Services Certificate(.p12) 업로드
  • 표준 APNs 인증서를 재사용하지 마세요
기본 앱과 동일한 번들 ID를 사용하여 VoIP 앱에 대한 **VoIP Services Certificate(.p12)**를 업로드해야 합니다.

Keychain Access의 VoIP 인증서

OneSignal 대시보드에 업로드된 VoIP 인증서

4. OneSignal에 VoIP 토큰 등록

Create User API를 사용하여 VoIP OneSignal 앱에 VoIP 토큰을 등록합니다.
VoIP 토큰이 개발 또는 샌드박스 빌드에서 오는 경우 "test_type": 1 속성을 포함해야 합니다.이를 생략하면:
  • API 호출이 성공할 수 있습니다
  • 푸시가 자동으로 실패합니다
curl --request POST \
     --url https://api.onesignal.com/apps/YOUR_VOIP_APP_ID/users \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "subscriptions": [
    {
      "type": "iOSPush",
      "token": "your-voip-token",
      "test_type": 1 // 프로덕션에서는 생략
    }
  ]
}
'
나중에 토큰을 업데이트하려면 Update Subscription API를 사용하세요.

5. VoIP 알림 전송

Create Notification API를 사용하고 다음 매개변수를 포함합니다:
  • "apns_push_type_override": "voip"
  • VoIP 앱의 app_id
  • 등록한 VoIP 토큰의 subscription_id
curl --include \
     --request POST \
     --header "Content-Type: application/json; charset=utf-8" \
     --header "Authorization: key YOUR_REST_API_KEY" \
     --data-binary '{
  "app_id": "YOUR_VOIP_APP_ID",
  "contents": {"en": "English Message"},
  "apns_push_type_override": "voip",
  "include_subscription_ids": ["YOUR_VOIP_SUBSCRIPTION_ID"]
}' \
https://api.onesignal.com/notifications

6. VoIP 설정 확인

다음 경우 iOS VoIP 통합이 작동하는 것입니다:
  1. VoIP 앱에서 VoIP 토큰이 iOS 푸시 구독으로 표시됩니다
  2. VoIP 푸시가 pushRegistry(_:didReceiveIncomingPushWith:for:completion:)를 트리거합니다
  3. 앱이 종료되거나 백그라운드 상태일 때도 깨어납니다

자주 묻는 질문

확인된 배달이 VoIP에서 작동하나요?

아니요, 확인된 배달은 VoIP 푸시에 대해 추적되지 않습니다. VoIP 알림에 대해 트리거되지 않는 Notification Service Extension에 의존합니다. 대신 네이티브 iOS PushKit 이벤트를 통해 수신을 추적하세요:
pushRegistry(_:didReceiveIncomingPushWith:for:completion:)
이 이벤트는 기본 앱 타겟의 일부이며 별도의 확장 프로그램이 필요하지 않습니다. Apple의 VoIP 문서에서 자세히 알아보세요.