ข้ามไปยังเนื้อหา

VoIP push

ใน iOS 8, Apple ได้เปิดตัว PushKit และ VoIP push ซึ่งเป็นการแจ้งเตือนแบบ push รูปแบบใหม่ นอกเหนือจากฟังก์ชันการทำงานของ push แบบมาตรฐานแล้ว VoIP push ยังช่วยให้แอปสามารถรันโค้ดได้ก่อนที่จะแสดงการแจ้งเตือนให้ผู้ใช้เห็น

1. เพิ่มโมดูล PushwooshVoIP ไปยังโปรเจกต์ของคุณ

Swift Package Manager

ภาพหน้าจอแสดงวิธีการเพิ่มแพ็คเกจ 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 ให้เพิ่มความสามารถ (capability) Voice over IP โดยติ๊กที่ช่องทำเครื่องหมาย ดังที่แสดงในภาพหน้าจอด้านล่าง:

ภาพหน้าจอแสดงความสามารถ 'Voice over IP' ที่เปิดใช้งานในแท็บ Signing & Capabilities ของ Xcode

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: ประเภทของ handle การโทรที่รองรับ ค่าที่เป็นไปได้:
/// - `1` – ทั่วไป
/// - `2` – หมายเลขโทรศัพท์
/// - `3` – ที่อยู่อีเมล
Pushwoosh.VoIP.initializeVoIP(true, ringtoneSound: "mySound.caf", handleTypes: 1)
// ตั้งค่า delegate เพื่อรับเหตุการณ์การโทร VoIP
Pushwoosh.VoIP.delegate = self
return true
}
// MARK: - Callback ที่จำเป็นสำหรับ PWVoIPCallDelegate
func voipDidReceiveIncomingCall(payload: PushwooshVoIP.PWVoIPMessage) {
// จัดการกับ VoIP push ที่เข้ามา
}
func pwProviderDidReset(_ provider: CXProvider) {
// จัดการกับการรีเซ็ต provider
}
func pwProviderDidBegin(_ provider: CXProvider) {
// จัดการกับการเปิดใช้งาน provider
}
}

4. โปรโตคอล PWVoIPCallDelegate กำหนด callback ที่จำเป็นและทางเลือกสำหรับจัดการวงจรชีวิตของการโทร VoIP และการโต้ตอบกับ CallKit

@objc public protocol PWVoIPCallDelegate: NSObjectProtocol {
/// ถูกเรียกเมื่อได้รับ VoIP push ที่เข้ามา
@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)
/// (ทางเลือก): ให้ instance ของ CallKit call controller
@objc optional func returnedCallController(_ controller: CXCallController)
/// (ทางเลือก): ให้ instance ของ CallKit provider
@objc optional func returnedProvider(_ provider: CXProvider)
/// (ทางเลือก): ถูกเรียกเมื่อ audio session ถูกเปิดใช้งาน
@objc optional func activatedAudioSession(_ provider: CXProvider, didActivate audioSession: AVAudioSession)
/// (ทางเลือก): ถูกเรียกเมื่อ audio session ถูกปิดใช้งาน
@objc optional func deactivatedAudioSession(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession)
}

5. อัปโหลดใบรับรอง VoIP ของคุณไปยัง Pushwoosh Control Panel ตามคู่มือการกำหนดค่า และเลือกเกตเวย์ Production

เท่านี้ก็เรียบร้อย!

แบ่งปันความคิดเห็นของคุณกับเรา

Anchor link to

ความคิดเห็นของคุณช่วยให้เราสร้างประสบการณ์ที่ดีขึ้น เราจึงยินดีที่จะรับฟังจากคุณหากคุณพบปัญหาใดๆ ในระหว่างขั้นตอนการผสานรวม SDK หากคุณประสบปัญหาใดๆ โปรดอย่าลังเลที่จะแบ่งปันความคิดเห็นของคุณกับเราผ่านแบบฟอร์มนี้