Successfully reported this slideshow.
Your SlideShare is downloading. ×

よくわかるMPNS

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 31 Ad

More Related Content

Advertisement

Recently uploaded (20)

よくわかるMPNS

  1. 1. よくわかるMPNS Windows Phone Arch NAGOYA yutaka Tsumori
  2. 2. 自己紹介 • tmytです • 大学院生は世を忍ぶ仮の姿 • 昨日修士論文を提出しました • 4月から社会人になってしまいます… • 白紙マスターです • Microsoft MVP for Device Application Development (Jan.2011-Dec.2012) だったりします
  3. 3. おしながき • スマートフォンを取り巻く環境 • PushとPull • MPNSのおはなし • 実装例
  4. 4. スマートフォンを取り巻く環境 • 携帯端末で扱う情報の変化 • 静的Web • メール • 動的Web • リアルタイムWeb
  5. 5. むかしのおはなし • 遙か昔Air H”とかでPDAで必死通信してた頃 • Webブラウザで普通のWebページを見ていました • 帯域も細いので画像も圧縮したりしてました • 端末も今ほど速くはないので派手なことはできませんでした • 電池も多くはないので今ほど派手な通信とかもできませんでした
  6. 6. 時代が解決したこと • 通信回線の高速化 • 64Kbps → 7.2Mbps • 演算速度の向上 • SH-3 40MHz → MSM8655 1GHz • バッテリの変化 • 乾電池2本(20時間) → Li-ion 1460mAh(280時間)
  7. 7. 最近のトレンド • 大容量のリッチコンテンツ • 動画 • ゲーム • リアルタイムな情報のやりとり • SMS/MMS • RSS • ソーシャル
  8. 8. リアルタイムな変化を受け取る • 例えば • GPSで目的の位置にたどり着いたときに • SMSで特定のメールが届いた時に • ネットワークの状態が変化した時に • 端末がスリープから起き上がった時に • SNSで自分宛のメッセージが送信された時に
  9. 9. PushとPull • 外の世界との通信には大きく分けて2種類 • Push • Pull • それぞれに違った特性があります
  10. 10. Pull • ユーザ(端末)が能動的に情報を取得する • 例えば • ブラウザでWebページを開く • メールボックスの中身をダウンロードする • Marketplaceからアプリをインストールする • 情報を引っ張ってくる(Pull)イメージ • 任意のタイミングで通信を開始できるのでバッテリなどを意識で きる
  11. 11. Push • ユーザ(端末)が受動的に情報を取得する • 例えば • 電話の着信 • メールが届いた • インスタントメッセージング • 情報が網側から飛んでくる(Push)イメージ • リアルタイムに情報を扱うことができる反面バッテリの消費量が 増加する
  12. 12. Pushの実装方法 • いくつかの方法 • 網でサポートされたPush配信 • 例えば • SMS通知 • 本当の意味でPush配信 • TCP/IPで通知チャネルを使用したPush配信 • 例えば • インスタントメッセージング • ネットワークを介した擬似的なPush配信
  13. 13. OSに見るPush通知フレームワーク • Windows Phone • Microsoft Push Notification Service (MPNS) • iPhone • Apple Push Notification Service (APNS) • Android • Cloud to Device Messaging (C2DM) • Windows Mobile (おまけ) • 自力
  14. 14. フレームワークの挙動 • OSごとに細かな違いはあるがだいたい同じ • OSへPush通知の利用を登録 • OSは各社のサービスへレジスト • その後通知トークンが取得できる • 任意のタイミングで通知トークンを使用しサービスサーバはメッセー ジを送信 • サービスサーバはデバイスへメッセージを転送 • メッセージを受け取ったデバイスは適宜処理を行う
  15. 15. フレームワークの挙動の図 プッシュチャネルを要 求 チャネルURIをサー 3 チャネルを応答 2 1 ビスへ通知 5 チャネルURIを経由し 4 MPNSへ通知を送信 デバイスへメッセージ MPNSサーバ を送信 Webサービス 出展: ftp://ftp.charlespetzold.com/TechEd2011/09-Networking.pptx
  16. 16. MPNSを使ってみる • MPNSを使用するのに必要なもの • MPNSを利用するアプリケーション • デバイスにメッセージを送信するサーバ • 少しのコーディングで簡単に利用できます
  17. 17. MPNSクライアント • 必要なもの • Microsoft.Phone.Notification • HttpNotificationChannel • このクラスだけでPush通知を利用できる
  18. 18. 簡単な使い方 • HttpNotificationChannelをインスタンス化 • ChannelUriUpdatedイベントハンドラを追加 • Open() でセッションをスタート • BindToShellToast() でトースト通知をOSに登録 • ChannelUriUpdatedイベントが発生したら通知先URLをサーバへ 転送 • ね?簡単でしょ?
  19. 19. サーバで行うこと • クライアントから通知先URLを受け取る • サーバで処理中任意のタイミングで通知先URLへXMLを送信する • → デバイスへメッセージが送信される
  20. 20. 利用出来る通知の種類 • Windows Phoneでは3種類 • トースト通知 • タイル通知 • Raw通知 • 最初の2個はアプリケーションが実行されていない場合でも受信 できる • 今回はトースト通知をサンプルにします
  21. 21. トースト通知 • トーストというのは端末上部に表示される短いメッセージ • Windows Phoneにおいて他のアプリケーション実行中でもユーザ にメッセージを表示できる唯一の方法
  22. 22. トースト通知を送信する • 手順 • トーストの内容を含んだXMLを通知先URLへ送信 • 以上 • 簡単です • ほんとうに?
  23. 23. MPNSで必要なリクエストヘッダ • MPNSではHTTPリクエストにいくつかの追加ヘッダが必要 • X-MessageID • X-NotificationClass • X-WindowsPhone-Target • X-CallbackURI • 最低限NotificationClass, WindowsPhone-Targetは必要
  24. 24. トーストの送信に必要なヘッダ • 先ほどのリクエストヘッダに適切なパラメタを与える • X-MessageID • GUID • X-WindowsPhone-Target • toast • X-NotificationClass • 2, 12, 22 からどれか一つ • 与えた物によってデバイスへ配信されるタイミングが違う
  25. 25. トースト通知に使用するXML <?xml version="1.0" encoding="utf-8"?> <wp:Notification xmlns:wp="WPNotification"> <wp:Toast> <wp:Text1>タイトル</wp:Text1> <wp:Text2>メッセージ</wp:Text2> <wp:Param>タップ時に開くURI</wp:Param> </wp:Toast> </wp:Notification>
  26. 26. 実際に送信した場合のダンプ POST /unthrottledt… HTTP/1.1 Host: notify.mpnf1.live-int.com X-MessageID: 801972E5-E623-452a-BA4F-61AD596EC835 X-WindowsPhone-Target: toast X-NotificationClass: 2 Content-Length: 242 Content-Type: text/xml <?xml version="1.0" encoding="utf-8"?> <wp:Notification xmlns:wp="WPNotification"> <wp:Toast> <wp:Text1>Hello</wp:Text1> <wp:Text2>Push Notification</wp:Text2> <wp:Param /> </wp:Toast> </wp:Notification>
  27. 27. DEMO
  28. 28. MPNSの実装例 • Amelloides • Twitterクライアント • バックエンドにWindows Azureを使ってます • Twitterでメンションを受け取るとMPNS経由で通知されます
  29. 29. MPNSの問題点 • 消費電力 • OSがMicrosoftのサーバと通信しそのセッション上に通知情報を流すた めバッテリ消費が増加する • 無線LAN利用に不向き • Windows Phoneの無線LANが端末スリープ状態になると切断されるので 通知セッションが破棄されてしまう • Mangoで改善された? • いまいち使いづらい
  30. 30. MPNSの制限 • 通知URLにXMLを送信する際データは最大1024Byteまで • Toast通知はアプリケーション起動中には表示されない • Raw通知はアプリケーション起動中にしか通知されない • バッテリセーバが有効な場合は通知が実行されない
  31. 31. まとめ • Push配信を使うことでWebのリアルタイムな変化を端末に配信で きる • MPNSを使うと比較的簡単にPush通知を使用したアプリケーショ ンが作れる • MPNSに対応すればそれだけでアプリケーションの付加価値に

×