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'
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: Логическое значение, указывающее, поддерживаются ли видеозвонки. /// - 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) { // Обработка сброса провайдера }
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 Control Panel в соответствии с Руководством по настройке и выберите Production gateway.
Вот и всё!
Поделитесь с нами своим мнением
Anchor link toВаши отзывы помогают нам улучшать наш продукт, поэтому мы будем рады, если вы поделитесь с нами своим мнением о процессе интеграции SDK. Если вы столкнетесь с какими-либо трудностями, пожалуйста, сообщите нам об этом через эту форму.