VoIP 푸시
iOS 8에서 Apple은 PushKit과 새로운 유형의 푸시 알림인 VoIP 푸시를 도입했습니다. 표준 푸시 기능 외에도 VoIP 푸시는 앱이 사용자에게 알림을 표시하기 전에 코드를 실행할 수 있도록 합니다.
1. 프로젝트에 PushwooshVoIP 모듈을 추가합니다.
Swift Package Manager

Cocoapods
# Uncomment the next line to define a global platform for your project# platform :ios, '9.0'
target 'MyApp' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks!
pod 'PushwooshXCFramework' pod 'PushwooshFramework/PushwooshVoIP'
end2. Signing & Capabilities 탭에서 아래 스크린샷과 같이 체크박스를 선택하여 Voice over IP 기능을 추가합니다:

3. 아래 코드와 같이 PushwooshVoIP 모듈을 초기화합니다.
import UIKitimport PushwooshFrameworkimport PushwooshVoIPimport CallKitimport PushKit
@mainclass AppDelegate: UIResponder, UIApplicationDelegate, PWVoIPCallDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
/// Pushwoosh VoIP 모듈을 초기화합니다. /// /// - 매개변수: /// - supportVideo: 영상 통화 지원 여부를 나타내는 Boolean 값입니다. /// - ringtoneSound: 수신 전화에 사용할 사용자 지정 벨소리 사운드 파일의 이름입니다 (예: `"mySound.caf"`). /// - handleTypes: 지원할 통화 핸들 유형입니다. 가능한 값: /// - `1` – 일반 /// - `2` – 전화번호 /// - `3` – 이메일 주소 Pushwoosh.VoIP.initializeVoIP(true, ringtoneSound: "mySound.caf", handleTypes: 1)
// VoIP 통화 이벤트를 수신하도록 델리게이트를 설정합니다 Pushwoosh.VoIP.delegate = self
return true }
// MARK: - 필수 PWVoIPCallDelegate 콜백
func voipDidReceiveIncomingCall(payload: PushwooshVoIP.PWVoIPMessage) { // 수신 VoIP 푸시 처리 }
func pwProviderDidReset(_ provider: CXProvider) { // provider 재설정 처리 }
func pwProviderDidBegin(_ provider: CXProvider) { // provider 활성화 처리 }}4. PWVoIPCallDelegate 프로토콜은 VoIP 통화 생명주기 및 CallKit 상호작용을 처리하기 위한 필수 및 선택적 콜백을 정의합니다.
@objc public protocol PWVoIPCallDelegate: NSObjectProtocol {
/// 수신 VoIP 푸시를 받았을 때 호출됩니다. @objc func voipDidReceiveIncomingCall(payload: PushwooshVoIP.PWVoIPMessage)
/// 선택 사항: 수신 전화가 CallKit에 성공적으로 보고되었을 때 호출됩니다. @objc optional func voipDidReportIncomingCallSuccessfully(voipMessage: PushwooshVoIP.PWVoIPMessage)
/// 선택 사항: 수신 전화를 CallKit에 보고하는 데 실패했을 때 호출됩니다. @objc optional func voipDidFailToReportIncomingCall(error: Error)
/// 선택 사항: 새로운 발신 전화가 시작될 때 호출됩니다. @objc optional func startCall(_ provider: CXProvider, perform action: CXStartCallAction)
/// 선택 사항: 활성 통화가 종료될 때 호출됩니다. @objc optional func endCall(_ provider: CXProvider, perform action: CXEndCallAction, voipMessage: PushwooshVoIP.PWVoIPMessage?)
/// 선택 사항: 수신 전화에 응답했을 때 호출됩니다. @objc optional func answerCall(_ provider: CXProvider, perform action: CXAnswerCallAction, voipMessage: PushwooshVoIP.PWVoIPMessage?)
/// 선택 사항: 통화가 음소거되거나 음소거 해제될 때 호출됩니다. @objc optional func mutedCall(_ provider: CXProvider, perform action: CXSetMutedCallAction)
/// 선택 사항: 통화가 보류되거나 보류 해제될 때 호출됩니다. @objc optional func heldCall(_ provider: CXProvider, perform action: CXSetHeldCallAction)
/// 선택 사항: DTMF 톤이 재생될 때 호출됩니다. @objc optional func playDTMF(_ provider: CXProvider, perform action: CXPlayDTMFCallAction)
/// CallKit provider가 재설정될 때 호출됩니다. @objc func pwProviderDidReset(_ provider: CXProvider)
/// CallKit provider가 시작될 때 호출됩니다. @objc func pwProviderDidBegin(_ provider: CXProvider)
/// 선택 사항: CallKit 통화 컨트롤러 인스턴스를 제공합니다. @objc optional func returnedCallController(_ controller: CXCallController)
/// 선택 사항: CallKit provider 인스턴스를 제공합니다. @objc optional func returnedProvider(_ provider: CXProvider)
/// 선택 사항: 오디오 세션이 활성화될 때 호출됩니다. @objc optional func activatedAudioSession(_ provider: CXProvider, didActivate audioSession: AVAudioSession)
/// 선택 사항: 오디오 세션이 비활성화될 때 호출됩니다. @objc optional func deactivatedAudioSession(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession)}5. 구성 가이드에 따라 VoIP 인증서를 Pushwoosh Control Panel에 업로드하고 프로덕션 게이트웨이를 선택합니다.
이것으로 끝입니다!
피드백을 공유해주세요
Anchor link to여러분의 피드백은 더 나은 경험을 만드는 데 도움이 됩니다. SDK 통합 과정에서 문제가 발생하면 언제든지 알려주세요. 어려움이 있으시면 주저하지 마시고 이 양식을 통해 의견을 공유해주세요.