キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
6178
閲覧回数
0
いいね!
0
コメント
Hiroshi Ishiyama
Cisco Employee
Cisco Employee

はじめに

iPhone (iOS) 上で動作する VoIPアプリケーションは、これまで、
VoIP Socket、Keepalive Timeout 等の API を利用して開発されて
きました。
しかし、Appleは消費電力の低減、伝送帯域の節約を行うため、
VoIPアプリケーションを、APN(Apple Push Notification) を用いた
方式に移行しようとしています。
(Jabber  for iPhone 等のVoIPアプリケーションは、この移行の影響を
大きく受けるため、システム全体の設計変更が必要になります。)

本ドキュメントでは、APN(Apple Push Notification)の概要について
説明します。

1.従来のVoIPソケットによる着信(課題)

VoIP アプリケーションでは、着信呼び出しやその他の関連データを
受信できるように、対応するサービスとの常時のネットワーク接続を
維持する必要があります。
VoIP アプリケーションを常時稼働させた場合は消費電力が多くなるため、
システムは VoIP アプリケーションを一時停止して、ソケットを監視する
機能を提供します。
着信のトラフィックを検出すると、システムはVoIPアプリケーションを
作動させて、そのソケットの制御をアプリケーションに返します。

着信がない場合は、VoIPアプリケーションは一次停止していますが、
対応するサービスとの接続を維持するため、定期的にバックグラウンドから
復帰して動作する必要があり、バッテリー等のリソースを消費してしまいます。

(例:Jabber for iPhoneは、10分間隔でバックグラウンドから復帰して
   Unified CMに対して Register メッセージを送信します。)

Appleは、不要なリソース消費をさらに低減するため、VoIPソケットによる
着信方式のサポートを終了するとアナウンスしています。

2.Apple Push Notification による着信(利点)

Apple の提供するの通知機能には、Local Notification と Remoto (Push)
Notification があります。
VoIPアプリケーションでは、APNs (Apple Push Notifications service) を
介した、Push Notification機能が利用されます。
Pushkit APIを使用することにより、VoIP アプリケーションはリモートサーバ
からの Push Notification を受信できるようになります。
Pushkit でVoIPコールを受信する場合、以下の様なメリットがあります。
 

・アプリが VoIP push が行われた場合にのみ起動するのバッテリーの節約ができる。
・Push受信時バックグラウンドで動作している場合でも、ランタイムが与えられ
 受信動作ができる。
・Push受信時、アプリは起動していない場合でも、自動的に起動して受信できる。
 (但し、signed outの状態では着信しない。)



3.APNs の基本動作

(1)登録動作

デバイスのアプリケーションがAPNsに接続した際、APNsはデバイス
(アプリケーション)を一意に識別するためのトークンを生成し返送します。

デバイス(アプリケーション)は、このトークンをプロバイダー(サーバー)に
送信します。その後、プロバイダーはこのトークンを用いて、デバイス
(アプリケーション)に対して個別に通知を行います。

 

APN1.JPG

(2)Push Notification の動作

プロバイダ(サーバ)とデバイス(アプリケーション)間で Push Notification
の設定が完了した後は、プロバイダから APNs に通知リクエストを送信できます。

プロバイダは、デバイストークン(グローバルに一意)を含む通知リクエストを生成し、

APNsに送信します。APNs は、対応する宛先デバイスに通知を配送します。

 

APN2.JPG

4.APNs を利用するためのネットワークの要件

リモート通知機能を利用するためには、プロバイダと APNs サーバ間、
デバイスとAPNsサーバ間の接続を確保する必要があります。
iPhone 等のデバイスは、モバイルデータ通信 (LTE) や Wi-Fi で APNS に接続します。

ファイアウォールの背後の Wi-Fi から接続する場合、Appleが公開している

TCPポート番号について、APNS サーバにプロキシを経由せずに直接接続できる

ようにする必要があります。

 

Apple が公開している APNs で使用するポート番号:


 TCP ポート 5223:APNS との通信用       ← デバイス(アプリ)から APNsサーバへの接続用
 TCP ポート 2195:APNS への通知の送信用  ←プロバイダからAPNsサーバへの接続用
 TCP ポート 2196:APNS フィードバックサービス用
 TCP ポート 443:デバイスのアクティベーション中、およびその後でデバイスが
         ポート 5223 で APNS に接続できなかった場合の
         フォールバック用 (Wi-Fi のみ) に必要。



まとめ

Jabber等のiPhone (iOS) 上で動作する VoIPアプリケーションは、
今後Apple Push Notification機能による着信動作へ移行する必要があります。
Apple Push Notificationについて詳細情報は、Appleのサイトで公開されているので、その内容を確認し、ネットワーク要件、通知動作について理解を深めておく必要があります。


参考ドキュメント:

Apple: Developper 日本語ドキュメント
Apple: LocalおよびPush Notificationプログラミングガイド
Apple: APNsの概要
Apple: WWDCビデオ
...Apple Push Notification (service) の解説ビデオがあります。
Apple: Notifications
Apple: Energy Efficiency Guide for iOS Apps: Voice Over IP (VoIP) Best Practices
Apple: プッシュ通知が届かない場合
Apple: ソフトウェア製品で使われている TCP および UDP ポート

Getting Started

検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう

シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします