注意:この記事はAppleのドキュメントを参照して書きました。実際に実装していないので間違いがあるかもしれません。
VoIP Push は CallKit とともに!(iOS13)
iOS 13 SDK でビルドしたアプリを iOS 13 上で動かした際、VoIP Push を受けたときに CallKit の reportNewIncomingCall を呼び出さなければならないことになりました。
reportNewIncomingCall を呼び出すと、電話の着信画面が表示されます。
つまり、VoIP Push は着信通知にしか使えないということになります!
チャットなどをサポートしている VoIP アプリは、VoIP Push を着信通知以外に利用していることもあると思いますが(え、そんなことしてない??)、今後は通常のPushを使う必要があります。
また、VoIP Push を使っているが CallKit には未対応という VoIP アプリもあるかと思いますが、今後はNGとなります。
CallKit に対応するか、通常のPush を使うか、対策が必要です。
(中国では CallKit 対応アプリをストアに提出できないと聞いてますがどうするのでしょうね・・・)
2020年4月以降に提出するアプリは iOS 13 SDK 対応必須ですので、それまでに対応必須です!
iOS 13 SDK の変化点
詳細は以下を参照ください。
pushRegistry(_:didReceiveIncomingPushWith:for:completion:) で VoIP Push を受信した際、この関数内で reportNewIncomingCall を呼び出さないとアプリの起動が停止されるそうです。
WWDC2019 の資料に以下のようにかかれています。
Must report incoming call with CallKit in didReceiveIncomingPush callback
If not, system may stop launching your app for VoIP pushes