はじめに
Apple 社の iPhone(iOS) の動作仕様の変更により、Jabber for iPhoneの着信動作が変更されてきました。
以前は、Jabber がバックグラウンドの状態でも、iOS が アプリに代わり VoIP ソケットを監視することによりコールを着信することが可能でした。しかし、2020年8月以降には、 Push 通知による着信(従来方式)への移行が必須となり、また2020年4月以降には、iOS13(SDK)の要件に対応した Push 通知による着信(新方式)へ移行することが必要になります。
本ドキュメントでは、バックグラウンドでの着信時のコールフローの変更点について解説します。
なお、動作仕様の変更の経緯および必要な対応については、Field Notice: FN – 70555 を参照してしてください。
1.レガシー VoIP アーキテクチャによる着信(VoIP ソケット監視方式)
Apple 社が VoIP コールの着信を Push 通知による方式に切り替える前の動作です。

VoIP アプリ(Jabber)がバックグラウンド状態の場合、Apple iOS から10分間隔で起動されCPU リソースが与えられます。VoIP アプリは、このタイミングで SIP サーバ(Unified CM)にRegister メッセージを送信し SIP プロトコルの接続状態を維持します。(KeepAlive動作)
VoIP アプリがバックグラウンド状態の場合、VoIPアプリに代わり iOS が VoIP ソケット(SIPポート)への着信を監視します。VoIP ソケットに着信があると、iOS は VoIP アプリを起動し、コールの情報を引き渡します。(VoIPコールの着信動作)
この着信方式の場合、VoIP アプリは10分間隔で、デバイス(iPhone、iPad)の CPU、ネットワークリソースを消費するため、バッテリーの消費量が多くなります。Apple社は、節電対策として VoIP ソケット監視による着信動作を廃止し、Push 通知によりアプリに着信を知らせる方式に移行しました。
2.Push Notification による着信のコールフロー(従来方式)
iOS13(SDK) より前のバージョンでの Push 通知による着信方式です。

Jabber がバックグラウンド状態に移行した場合、Jabber と Unified CM 間のSIPチャンネルは一旦切断されます。
他の IP Phone からバックグラウンド状態の Jabber へコールした場合、Unified CM は Cisco Collaboration Cloud および APNs(Apple Push Notification service)を介してPush 通知を Jabber へ送信します。
Push 通知により起動された Jabber は、Register メッセージをUnified CMに送信し、SIP チャンネルを再確立します。
Register メッセージを受信した Unified CM は、INVITE メッセージを Jabber for iPhone に送信します。
INVITE メッセージを受信した Jabber は、Apple 社の CallKit を使用して着信を通知します。
3.Push Notification による着信のコールフロー(新方式)
iOS13(SDK) 以降での Push 通知による着信方式です。

基本的な動作は、従来の Push 通知による着信と同様です。
Jabber がバックグラウンド状態に移行した場合、Jabber と Unified CM 間の SIP チャンネルは
一旦切断されます。
他の IP Phone からバックグラウンド状態の Jabber へコールした場合、Unified CM は Cisco Collaboration Cloud および APNs(Apple Push Notification)を介してPush 通知を Jabber へ送信します。iOS13 では、Push 通知に Caller 情報(displayName, number, remote Party-id, PUSH ID)が含まれます。
Push 通知により起動された Jabber は、CallKitを使用して着信を通知します。その際、Push通知に含まれる Caller 情報が表示されます。
Jabber は、Register メッセージを Unified CM に送信し、 SIP チャンネルを再確立します。
Register メッセージを受信した Unified CM は、INVITEメッセージを Jabber に送信します。その際、INVITEメッセージには Push 通知と同じ PUSH ID が含まれています。INVITE メッセージを受信した Jabber は、PUSH ID を照合し、CallKit と INVITE のコールを関連づけ、コール着信が成立します。
まとめ
Apple 社の iPhone(iOS) の動作仕様の変更により、Jabber for iPhone のバックグラウンドでの着信動作が変更されてきました。
着信に関する問題が発生した場合、正しいコールフローを理解し、トラブルシューティングを行ってください。
参考ドキュメント:
Field Notice: FN - 70555 - Legacy VoIP Mode and iOS 13 Apple Push Notification Service Changes That Affect Cisco Jabber, Cisco Webex Teams, Cisco Unified Communications Manager and IM & Presence Service, and Cisco Expressway - Software Upgrade Recomm...
APNs の FN - 70555 に対する補足事項
Apple Push Notification について
Jabber for iPhone の Push Notification 動作ついて
VoIP ソケット着信から Push Notification 着信へ移行するメリット
APNs: Cisco Collaboration Cloud の正常性の確認方法
Jabber for iPhone の APNs のトラブルシューティングに役立つログ
Apple Push Notification のトラブルシューティングに役立つツール Prowl の紹介