SwiftでCallKitを使用したアプリを作成する

SwiftでCallKitを使用したアプリを作成する方法については以下の手順になります。

1. Xcodeで新しいプロジェクトを作成し、Single View Appを選択する。

2. Capabilitiesタブから、”CallKit”を利用するために有効化する。

3. CallKitを利用するために、新しいプロトコルファイルを作成する。
例えば、”CallManager.swift”という名前で作成する。

import CallKit

class CallManager : NSObject, CXCallObserverDelegate, CXProviderDelegate {

    static let shared = CallManager()

    let provider: CXProvider
    let callController = CXCallController()
    var callObserver: CXCallObserver?
    var providerConfiguration: CXProviderConfiguration

    private override init() {
        providerConfiguration = CXProviderConfiguration(localizedName: "My Call App")
        providerConfiguration.supportsVideo = false
        providerConfiguration.maximumCallsPerCallGroup = 1
        providerConfiguration.supportedHandleTypes = [.generic]
        provider = CXProvider(configuration: providerConfiguration)

        super.init()

        provider.setDelegate(self, queue: nil)

        callObserver = CXCallObserver()
        callObserver?.setDelegate(self, queue: nil)
    }

    func providerDidReset(_ provider: CXProvider) {
        print("Provider did reset")
    }
    func provider(_ provider: CXProvider, didActivate audioSession: AVAudioSession) {
        print("Provider did activate audio session")
    }
    func provider(_ provider: CXProvider, didDeactivate audioSession: AVAudioSession) {
        print("Provider did deactivate audio session")
    }
}

4. アプリに電話番号をダイヤルする機能を追加します。
例えば、”ViewController.swift”にダイヤル機能を追加してください。

import UIKit
import CallKit

class ViewController: UIViewController, CXProviderDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func callButtonPressed(_ sender: Any) {
        let callHandle = CXHandle(type: .generic, value: "+18001234567")
        let startCallAction = CXStartCallAction(call: UUID(), handle: callHandle)
        let transaction = CXTransaction(action: startCallAction)

        CallManager.shared.callController.request(transaction) { error in
            if let error = error {
                print("Error requesting transaction:", error.localizedDescription)
            } else {
                print("Transaction requested successfully")
            }
        }
    }
}

5. アプリのInfo.plistファイルに以下のCallKit関連情報を追加します。

NSExtension

    NSExtensionPointIdentifier
    com.apple.callkit.call-directory
    NSExtensionPrincipalClass
    $(PRODUCT_MODULE_NAME).DirectoryHandler


NSUserActivityTypes

    INStartAudioCallIntent
    INStartVideoCallIntent
    INSearchCallHistoryIntent
    INListRideOptionsIntent

以上がCallKitを使用したアプリを作成するための手順となります。その他にも色々な機能を追加することができますが、このサンプルコードでの基本的な使い方を把握していただけると思います。

コメント

タイトルとURLをコピーしました