Перейти к содержанию

VoIP-пуши

В iOS 8 Apple представила PushKit и VoIP-пуши — новый тип push-уведомлений. Помимо стандартного функционала push-уведомлений, VoIP-пуши позволяют приложению выполнять код до отображения уведомления пользователю.

1. Добавьте модуль PushwooshVoIP в ваш проект.

Swift Package Manager

Cocoapods

Terminal window
# 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 UIKit
import PushwooshFramework
import PushwooshVoIP
import CallKit
import PushKit
@main
class 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. Если вы столкнетесь с какими-либо трудностями, пожалуйста, сообщите нам об этом через эту форму.