Your SlideShare is downloading. ×
0
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
よくわかるMPNS
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

よくわかるMPNS

1,292

Published on

Windows Phone Arch Nagoya でのセッション資料です。

Windows Phone Arch Nagoya でのセッション資料です。

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,292
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×