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