SlideShare una empresa de Scribd logo
1 de 31
よくわかるMPNS
Windows Phone Arch NAGOYA
yutaka Tsumori
自己紹介
• tmytです
• 大学院生は世を忍ぶ仮の姿
 • 昨日修士論文を提出しました
 • 4月から社会人になってしまいます…
• 白紙マスターです
• Microsoft MVP for Device Application Development
  (Jan.2011-Dec.2012) だったりします
おしながき
• スマートフォンを取り巻く環境
• PushとPull
• MPNSのおはなし
• 実装例
スマートフォンを取り巻く環境
• 携帯端末で扱う情報の変化
•   静的Web
•   メール
•   動的Web
•   リアルタイムWeb
むかしのおはなし
• 遙か昔Air H”とかでPDAで必死通信してた頃
• Webブラウザで普通のWebページを見ていました
• 帯域も細いので画像も圧縮したりしてました
• 端末も今ほど速くはないので派手なことはできませんでした
• 電池も多くはないので今ほど派手な通信とかもできませんでした
時代が解決したこと
• 通信回線の高速化
• 64Kbps → 7.2Mbps
• 演算速度の向上
• SH-3 40MHz → MSM8655 1GHz
• バッテリの変化
• 乾電池2本(20時間) → Li-ion 1460mAh(280時間)
最近のトレンド
• 大容量のリッチコンテンツ
• 動画
• ゲーム
• リアルタイムな情報のやりとり
• SMS/MMS
• RSS
• ソーシャル
リアルタイムな変化を受け取る
• 例えば
•   GPSで目的の位置にたどり着いたときに
•   SMSで特定のメールが届いた時に
•   ネットワークの状態が変化した時に
•   端末がスリープから起き上がった時に
•   SNSで自分宛のメッセージが送信された時に
PushとPull
• 外の世界との通信には大きく分けて2種類
• Push
• Pull
• それぞれに違った特性があります
Pull
• ユーザ(端末)が能動的に情報を取得する
• 例えば
 • ブラウザでWebページを開く
 • メールボックスの中身をダウンロードする
 • Marketplaceからアプリをインストールする
• 情報を引っ張ってくる(Pull)イメージ
• 任意のタイミングで通信を開始できるのでバッテリなどを意識で
  きる
Push
• ユーザ(端末)が受動的に情報を取得する
• 例えば
 • 電話の着信
 • メールが届いた
 • インスタントメッセージング
• 情報が網側から飛んでくる(Push)イメージ
• リアルタイムに情報を扱うことができる反面バッテリの消費量が
  増加する
Pushの実装方法
• いくつかの方法
• 網でサポートされたPush配信
 • 例えば
  • SMS通知
 • 本当の意味でPush配信
• TCP/IPで通知チャネルを使用したPush配信
 • 例えば
  • インスタントメッセージング
 • ネットワークを介した擬似的なPush配信
OSに見るPush通知フレームワーク
• Windows Phone
 • Microsoft Push Notification Service (MPNS)
• iPhone
 • Apple Push Notification Service (APNS)
• Android
 • Cloud to Device Messaging (C2DM)
• Windows Mobile (おまけ)
 • 自力
フレームワークの挙動
• OSごとに細かな違いはあるがだいたい同じ
• OSへPush通知の利用を登録
 • OSは各社のサービスへレジスト
 • その後通知トークンが取得できる
• 任意のタイミングで通知トークンを使用しサービスサーバはメッセー
  ジを送信
• サービスサーバはデバイスへメッセージを転送
• メッセージを受け取ったデバイスは適宜処理を行う
フレームワークの挙動の図

   プッシュチャネルを要
   求

                                                        チャネルURIをサー
                                                    3
 チャネルを応答        2       1                               ビスへ通知



                    5            チャネルURIを経由し
                             4
                                 MPNSへ通知を送信


                            デバイスへメッセージ
 MPNSサーバ                    を送信                           Webサービス

      出展: ftp://ftp.charlespetzold.com/TechEd2011/09-Networking.pptx
MPNSを使ってみる
• MPNSを使用するのに必要なもの
• MPNSを利用するアプリケーション
• デバイスにメッセージを送信するサーバ
• 少しのコーディングで簡単に利用できます
MPNSクライアント
• 必要なもの
• Microsoft.Phone.Notification
   • HttpNotificationChannel
• このクラスだけでPush通知を利用できる
簡単な使い方
• HttpNotificationChannelをインスタンス化
• ChannelUriUpdatedイベントハンドラを追加
• Open() でセッションをスタート
• BindToShellToast() でトースト通知をOSに登録
• ChannelUriUpdatedイベントが発生したら通知先URLをサーバへ
  転送

• ね?簡単でしょ?
サーバで行うこと
• クライアントから通知先URLを受け取る
• サーバで処理中任意のタイミングで通知先URLへXMLを送信する
• → デバイスへメッセージが送信される
利用出来る通知の種類
• Windows Phoneでは3種類
 • トースト通知
 • タイル通知
 • Raw通知
• 最初の2個はアプリケーションが実行されていない場合でも受信
  できる
• 今回はトースト通知をサンプルにします
トースト通知
• トーストというのは端末上部に表示される短いメッセージ
• Windows Phoneにおいて他のアプリケーション実行中でもユーザ
  にメッセージを表示できる唯一の方法
トースト通知を送信する
• 手順
• トーストの内容を含んだXMLを通知先URLへ送信
• 以上
• 簡単です

• ほんとうに?
MPNSで必要なリクエストヘッダ
• MPNSではHTTPリクエストにいくつかの追加ヘッダが必要
 •   X-MessageID
 •   X-NotificationClass
 •   X-WindowsPhone-Target
 •   X-CallbackURI
• 最低限NotificationClass, WindowsPhone-Targetは必要
トーストの送信に必要なヘッダ
• 先ほどのリクエストヘッダに適切なパラメタを与える
• X-MessageID
 • GUID
• X-WindowsPhone-Target
 • toast
• X-NotificationClass
 • 2, 12, 22 からどれか一つ
   • 与えた物によってデバイスへ配信されるタイミングが違う
トースト通知に使用する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>
実際に送信した場合のダンプ
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>
DEMO
MPNSの実装例
• Amelloides
 • Twitterクライアント
 • バックエンドにWindows Azureを使ってます
 • Twitterでメンションを受け取るとMPNS経由で通知されます
MPNSの問題点
• 消費電力
• OSがMicrosoftのサーバと通信しそのセッション上に通知情報を流すた
  めバッテリ消費が増加する
• 無線LAN利用に不向き
• Windows Phoneの無線LANが端末スリープ状態になると切断されるので
  通知セッションが破棄されてしまう
 • Mangoで改善された?
• いまいち使いづらい
MPNSの制限
• 通知URLにXMLを送信する際データは最大1024Byteまで
• Toast通知はアプリケーション起動中には表示されない
• Raw通知はアプリケーション起動中にしか通知されない
• バッテリセーバが有効な場合は通知が実行されない
まとめ
• Push配信を使うことでWebのリアルタイムな変化を端末に配信で
  きる
• MPNSを使うと比較的簡単にPush通知を使用したアプリケーショ
  ンが作れる
• MPNSに対応すればそれだけでアプリケーションの付加価値に

Más contenido relacionado

Destacado

せっけーのおはなし
せっけーのおはなしせっけーのおはなし
せっけーのおはなしYutaka Tsumori
 
Aristeaのコード補完
Aristeaのコード補完Aristeaのコード補完
Aristeaのコード補完Yutaka Tsumori
 
未来(あす)Xamlの1msに泣かないために
未来(あす)Xamlの1msに泣かないために未来(あす)Xamlの1msに泣かないために
未来(あす)Xamlの1msに泣かないためにYutaka Tsumori
 
Samba4でADしよう!
Samba4でADしよう!Samba4でADしよう!
Samba4でADしよう!Yutaka Tsumori
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠Sho Okada
 

Destacado (8)

Blync light for HACK
Blync light for HACKBlync light for HACK
Blync light for HACK
 
すまべん関西#18
すまべん関西#18すまべん関西#18
すまべん関西#18
 
Wpdd lt
Wpdd ltWpdd lt
Wpdd lt
 
せっけーのおはなし
せっけーのおはなしせっけーのおはなし
せっけーのおはなし
 
Aristeaのコード補完
Aristeaのコード補完Aristeaのコード補完
Aristeaのコード補完
 
未来(あす)Xamlの1msに泣かないために
未来(あす)Xamlの1msに泣かないために未来(あす)Xamlの1msに泣かないために
未来(あす)Xamlの1msに泣かないために
 
Samba4でADしよう!
Samba4でADしよう!Samba4でADしよう!
Samba4でADしよう!
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
 

Más de Yutaka Tsumori

Windows phoneの新しい通知api
Windows phoneの新しい通知apiWindows phoneの新しい通知api
Windows phoneの新しい通知apiYutaka Tsumori
 
Twitter Client for ZSH
Twitter Client for ZSHTwitter Client for ZSH
Twitter Client for ZSHYutaka Tsumori
 
AndroidではじめるJava
AndroidではじめるJavaAndroidではじめるJava
AndroidではじめるJavaYutaka Tsumori
 
20120922 wdc with_ms_like
20120922 wdc with_ms_like20120922 wdc with_ms_like
20120922 wdc with_ms_likeYutaka Tsumori
 
某Music unなんとか
某Music unなんとか某Music unなんとか
某Music unなんとかYutaka Tsumori
 
Androidのおはなし++
Androidのおはなし++Androidのおはなし++
Androidのおはなし++Yutaka Tsumori
 
スマートフォン勉強会@九州
スマートフォン勉強会@九州スマートフォン勉強会@九州
スマートフォン勉強会@九州Yutaka Tsumori
 
Titanium mobileで遊んでみた
Titanium mobileで遊んでみたTitanium mobileで遊んでみた
Titanium mobileで遊んでみたYutaka Tsumori
 
Windows Phone 7 “Mango” SDK最速情報!
Windows Phone 7 “Mango” SDK最速情報!Windows Phone 7 “Mango” SDK最速情報!
Windows Phone 7 “Mango” SDK最速情報!Yutaka Tsumori
 
ぼくのかんがえたさいきょうのついったーくらいあんと
ぼくのかんがえたさいきょうのついったーくらいあんとぼくのかんがえたさいきょうのついったーくらいあんと
ぼくのかんがえたさいきょうのついったーくらいあんとYutaka Tsumori
 
Smartphone workshop kansai #9
Smartphone workshop kansai #9Smartphone workshop kansai #9
Smartphone workshop kansai #9Yutaka Tsumori
 
スマートフォン勉強会@関西 #6 LT
スマートフォン勉強会@関西 #6 LTスマートフォン勉強会@関西 #6 LT
スマートフォン勉強会@関西 #6 LTYutaka Tsumori
 

Más de Yutaka Tsumori (18)

Buri2019
Buri2019Buri2019
Buri2019
 
Setsな話
Setsな話Setsな話
Setsな話
 
XAMLで条件分岐
XAMLで条件分岐XAMLで条件分岐
XAMLで条件分岐
 
BuriKaigi2018
BuriKaigi2018BuriKaigi2018
BuriKaigi2018
 
Windows phoneの新しい通知api
Windows phoneの新しい通知apiWindows phoneの新しい通知api
Windows phoneの新しい通知api
 
Twitter Client for ZSH
Twitter Client for ZSHTwitter Client for ZSH
Twitter Client for ZSH
 
AndroidではじめるJava
AndroidではじめるJavaAndroidではじめるJava
AndroidではじめるJava
 
20120922 wdc with_ms_like
20120922 wdc with_ms_like20120922 wdc with_ms_like
20120922 wdc with_ms_like
 
某Music unなんとか
某Music unなんとか某Music unなんとか
某Music unなんとか
 
たのアプLt
たのアプLtたのアプLt
たのアプLt
 
Androidのおはなし++
Androidのおはなし++Androidのおはなし++
Androidのおはなし++
 
スマートフォン勉強会@九州
スマートフォン勉強会@九州スマートフォン勉強会@九州
スマートフォン勉強会@九州
 
Titanium mobileで遊んでみた
Titanium mobileで遊んでみたTitanium mobileで遊んでみた
Titanium mobileで遊んでみた
 
Windows Phone 7 “Mango” SDK最速情報!
Windows Phone 7 “Mango” SDK最速情報!Windows Phone 7 “Mango” SDK最速情報!
Windows Phone 7 “Mango” SDK最速情報!
 
ぼくのかんがえたさいきょうのついったーくらいあんと
ぼくのかんがえたさいきょうのついったーくらいあんとぼくのかんがえたさいきょうのついったーくらいあんと
ぼくのかんがえたさいきょうのついったーくらいあんと
 
Smartphone workshop kansai #9
Smartphone workshop kansai #9Smartphone workshop kansai #9
Smartphone workshop kansai #9
 
Sumaben#11
Sumaben#11Sumaben#11
Sumaben#11
 
スマートフォン勉強会@関西 #6 LT
スマートフォン勉強会@関西 #6 LTスマートフォン勉強会@関西 #6 LT
スマートフォン勉強会@関西 #6 LT
 

Último

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Último (8)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

よくわかるMPNS