---
lang: ja
path: cookbook/ios-sdk/call-kit
labels: クックブック/iOS SDK/CallKitとの連携
metaTitle: CallKitとの連携 | iOS SDK｜ クックブック ｜ SkyWay（スカイウェイ）
---

# CallKitとの連携
CallKit と SkyWay を共に利用する場合は、CallKit 内部でも`AVAudioSession`の設定が変更されることによってバックグラウンド状態での着信時に音声が出力されない問題があるため、以下を実装してください。

SDK 内部では[WebRTCフレームワーク](https://webrtc.github.io/webrtc-org/native-code/ios/)を利用しており、`AVAudioSession`の設定を必要に応じて変更しています。

1.`CXProviderDelegate`を利用するクラスにWebRTCフレームワークをimportする

```swift
import WebRTC
```

2.`CXProviderDelegate`において、応答したときのアクション(`CXAnswerCallAction`)が取得できる[provider(_:action:)](https://developer.apple.com/documentation/callkit/cxproviderdelegate/1648270-provider)関数の中で以下のコードを実装します。

```swift
RTCAudioSession.sharedInstance().useManualAudio = true
RTCAudioSession.sharedInstance().isAudioEnabled = false

do {
    RTCAudioSession.sharedInstance().lockForConfiguration()
    defer {
        RTCAudioSession.sharedInstance().unlockForConfiguration()
    }
    try RTCAudioSession.sharedInstance().setConfiguration(RTCAudioSessionConfiguration())
}catch {
    print("Setting configuration failed: \(error.localizedDescription)")
}
```

3.`CXProviderDelegate`の[provider(_:didActivate)](https://developer.apple.com/documentation/callkit/cxproviderdelegate/provider(_:didactivate:))関数の中で以下のコードを実装します。

```swift
RTCAudioSession.sharedInstance().audioSessionDidActivate(audioSession)
RTCAudioSession.sharedInstance().isAudioEnabled = true
```

4.`CXProviderDelegate`の[provider(_:didDeactivate)](https://developer.apple.com/documentation/callkit/cxproviderdelegate/provider(_:diddeactivate:))関数の中で以下のコードを実装します。
```swift
RTCAudioSession.sharedInstance().audioSessionDidDeactivate(audioSession)
RTCAudioSession.sharedInstance().isAudioEnabled = false
RTCAudioSession.sharedInstance().useManualAudio = false
```

CallKit との連携に関するご不明点がございましたら、Enterprise プランのテクニカルサポートよりお問い合わせください。[テクニカルサポートについての詳細はこちら](https://support.skyway.ntt.com/hc/ja/articles/14940933417369)を参照してください。
