###不具合内容
iOS で VoIP アプリを作成しています。
iPhone の電話履歴から発信を行う処理が、iOS 13 環境で動作しません。
SpeakerBox を参考に実装しており、iOS 12.x までの端末では問題なく動作しています。
###詳細
iPhone の電話帳履歴から当アプリに対して発信を行うと、
application(_:continue:restorationHandler:) が呼び出されます。
iOS 12.x までは userActivity.startCallHandle から電話番号を取得できるのですが、iOS 13 では userActivity.startCallHandle を取得する処理中、startAudioCallIntent の値が nil となってしまいます。
swift
1let interaction = interaction, 2let startAudioCallIntent = interaction.intent as? INStartAudioCallIntent, 3let contact = startAudioCallIntent.contacts?.first
userActivity.activityType は "INStartCallIntent" となっていました。
interaction.intent 自体も nil ではないので INStartAudioCallIntent へのキャストが失敗している?ようです。
###対策方法は?
他のアプリで試してみたところ、iOS 13 でも電話履歴からの発信が可能でしたので何らかの違いがあるのだと思います。
このあたりの情報をお持ちの方は教えていただけないでしょうか?
よろしくお願いします。
###経過報告
よくよく調べると、iOS 12.x までは、userActivity.activityType が INStartAudioCallIntent もしくは INStartVideoCallIntent になり、iOS 13 では INStartCallIntent になることがわかりました。
swift
1let startCallIntent = interaction.intent as? INStartCallIntent
とすることで、INPerson から電話番号の取得ができました。
また、ビデオかどうかは startCallIntent.callCapability をチェックすることで確認できるようです。
ただ、INStartCallIntent は iOS 13 SDK からなので、xcode 10.x でのビルドが未定義エラーでできません。。。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。