VoIP-пуши
В iOS 8 Apple представила PushKit и VoIP-пуши — новый тип push-уведомлений. Помимо стандартного функционала push-уведомлений, 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'
end
2. На вкладке 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: Логическое значение, указывающее, поддерживаются ли видеозвонки. /// - ringtoneSound: Имя файла пользовательского рингтона для входящих звонков (например, `"mySound.caf"`). /// - handleTypes: Тип поддерживаемого дескриптора вызова. Возможные значения: /// - `1` – Общий (Generic) /// - `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) { // Обработка сброса провайдера }
func pwProviderDidBegin(_ provider: CXProvider) { // Обработка активации провайдера }}
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. @objc func pwProviderDidReset(_ provider: CXProvider)
/// Вызывается при запуске провайдера CallKit. @objc func pwProviderDidBegin(_ provider: CXProvider)
/// Опционально: Предоставляет экземпляр контроллера вызовов CallKit. @objc optional func returnedCallController(_ controller: CXCallController)
/// Опционально: Предоставляет экземпляр провайдера CallKit. @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 в соответствии с Руководством по настройке и выберите шлюз Production.
Вот и все!
Поделитесь с нами своим мнением
Anchor link toВаши отзывы помогают нам делать наш продукт лучше, поэтому мы будем рады, если вы поделитесь своим мнением о процессе интеграции SDK. Если вы столкнетесь с какими-либо трудностями, пожалуйста, сообщите нам об этом через эту форму.