Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Windows ストアアプリで Push通知を使いこなそう
Search
tanaka_733
May 11, 2013
Technology
0
1.9k
Windows ストアアプリで Push通知を使いこなそう
2013/5/11 Community Open Day 2013 東京会場 ルームB 11:00~のセッション
tanaka_733
May 11, 2013
Tweet
Share
More Decks by tanaka_733
See All by tanaka_733
SRENEXT 2020 [B5] New RelicのSREに学ぶSREのためのNew Relic活用法
tanaka733
2
9.4k
Calling PowerShell from CSharp
tanaka733
0
1.6k
Garbage Collection in .NET Framework
tanaka733
4
2.8k
New Features in Visual Studio 2013
tanaka733
0
1k
Starting Unity for Windows Store App
tanaka733
0
800
とあるインフラエンジニアのAzure活用
tanaka733
2
550
ぼくの考えた割と普通(c)なデプロイ戦略
tanaka733
1
11k
ASP.NET MVC4 Web APIをバックエンドにして作るストアとWindows Phoneプッシュ通知アプリ
tanaka733
0
1.7k
Yurufuwa_CSharp.pdf
tanaka733
0
5.1k
Other Decks in Technology
See All in Technology
GraphRAG: What I Thought I Knew (But Didn’t)
sashimimochi
0
150
Grid表示のレイアウトで Flow layoutsを使う
cffyoha
1
120
SREとしてスタッフエンジニアを目指す / SRE Kaigi 2025
tjun
15
5.4k
Platform EngineeringがあればSREはいらない!? 新時代のSREに求められる役割とは
mshibuya
2
3.5k
アクセシブルなマークアップの上に成り立つユーザーファーストなドロップダウンメニューの実装 / 20250127_cloudsign_User1st_FE
bengo4com
2
1.1k
Women in Agile
kawaguti
PRO
2
150
サーバーレスで楽しよう!お気軽に始められる3つのポイント / Have fun with Serverless!
_kensh
2
110
FinJAWS_reinvent2024_recap_database
asahihidehiko
2
320
教師なし学習の基礎
kanojikajino
4
330
バクラクの組織とアーキテクチャ(要約)2025/01版
shkomine
7
1.2k
CNAPPから考えるAWSガバナンスの実践と最適化
nrinetcom
PRO
1
290
TypeScriptでモジュラーモノリスやってみた
diggymo
0
120
Featured
See All Featured
Six Lessons from altMBA
skipperchong
27
3.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Navigating Team Friction
lara
183
15k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Statistics for Hackers
jakevdp
797
220k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Fireside Chat
paigeccino
34
3.2k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
3k
Into the Great Unknown - MozCon
thekraken
34
1.6k
Thoughts on Productivity
jonyablonski
68
4.4k
We Have a Design System, Now What?
morganepeng
51
7.4k
Transcript
Windows ストアアプリで Push通知を使いこなそう @tanaka_733 Community Open Day 2013 5/11 (Sat)
Agenda はじめに なぜPush通知を使うのか クライアント側の実装 サーバー側の実装
自己紹介 (@tanaka_733) めとべや東京 • http://metrostyledev.net/ • #めとべや C# について •
仕事で • 株式会社グラニ勤務 • 趣味の開発で • Windows ストアアプリ • Windows Phone アプリ • Kinect • ブログ • 銀の光と碧い空 ストアアプリは 数本リリース • 子連れ旅行 powered by じゃらん • SkyRecorder • はてな動画(仮) • など
めとべや東京 とは・・・ 定期的に勉強会を開催しています • 前回 3/30 • 次回 7/6 (土)、申し込むサイトができたらTwitterで告知します
• 場所は麹町のKDDI ウェブコミュニケーションズさん(予定) テーマはXAMLを中心としたテクノロジが多め • Metro といいつつ、ストアアプリだけではないよ • 気軽に参加してください! && 登壇者の方も若干名募集してます!!
株式会社グラニ 設立1年たっていないSAP企業 • Kinki KidsのCMやってる「神獄のヴァルハラゲート」 • 今週FP版GREEランキングで1位を獲得 C# への移行を実施中 •
ASP.NET な開発、Windows Serverな運用
セッションの目的 ストアアプリのPush通知に詳しくなる 直接通知とトースト通知の実装を知る サーバーサイドのメッセージ送信をハンドルする
以前のセッションの発展版です WindowsストアアプリでPush通知を使ってみよう at Windows 8 Developers カンファレンス vol.2.0 https://speakerdeck.com/tanaka733/windowssutoaapuride- pushtong-zhi-woshi-tutemiyou
一部同じページ作っていますが、 ぜひ元の資料もご覧ください
Agenda はじめに なぜPush通知を使うのか クライアント側の実装 サーバー側の実装
ストアアプリは没入型 Child Playing Video Games (Animal Crossing) By mamarati http://www.flickr.com/photos/36758336@N00/41589909/
動いていないアプリが情報を伝えるには? • アプリを選んでもらうときにアピール タイル • 新着メッセージの「数」などを表示 バッジ • トースト、直接などの方法で強くアピール 通知
通知の配信方法 (基本的なタイミング) • アプリ実行中にAPIを呼び出す ローカル • 指定した時間にAPIを呼び出すようにスケジュール スケジュール • ポーリングしてタイルとバッジを更新
定期的 • アプリが実行されていなくても外部から送信 • タイル、バッジ、トースト・直接通知のすべてに対応 プッシュ 通知配信方法の選択 http://msdn.microsoft.com/ja-jp/library/windows/apps/hh779721.aspx
プッシュ通知の仕組み https://github.com/tjanczuk/wns
プッシュ通知の仕組み (クライアント側) https://github.com/tjanczuk/wns 開発している ストアアプリ OS側で提供して いる基盤
プッシュ通知の仕組み (サーバー側) https://github.com/tjanczuk/wns 開発する サーバー側 システム MSが提供している 通知基盤
トースト通知と直接通知 • タイル・バッジ通知と同じく、定型的な機能 • OS側でハンドリングされる、実行中でなくても通知される • オフラインの場合、通知は保存されない トースト通知 • アプリが定義したXMLメッセージをやり取りする
• アプリ側でハンドルするための処理が必要 • 実行時には通知配信イベントで受け取る • 非実行時では、バックグラウンドタスクが必要 直接通知
オフラインでも直接通知を受け取る方法 • 既定ではキャッシュされない為受け取れない • X-WNS-Cache-Policy ヘッダーを設定する サーバー • バックグラウンドタスクを使って オフラインでも処理できるようにする
クライア ント
DEMO Azure Mobile Servicesを使ったトースト通知と直接通知
Agenda はじめに なぜPush通知を使うのか クライアント側の実装 サーバー側の実装
クライアント側で必要な処理 ダッシュボードからアプリをストアに登録して、アプリを関連づける マニフェストを編集してトースト通知を許可する ChanelURI を取得して、サーバーサイドに通知する 通知受信イベントを実装する バックグラウンドタスクを実装して、キャッシュされた通知を処理する 直接通知の場合
チャネルの更新の実装 常に前回の送信の状態を記録する • 前回のチャネルURI • 送信のステータス (成功 or 失敗) 取得して必要があれば送信する
• URIが更新された場合 • 前回の送信が失敗している場合 定期的に更新する • チャネルの有効期限は30日 • アプリが30日以上起動されない場合はバックグラウンドタスクで実行 • 状態の記録は固有記憶域を使用
Agenda はじめに なぜPush通知を使うのか クライアント側の実装 サーバー側の実装
サーバー側で必要な処理 クライアントのチャネルURIの管理 • クライアントが送信してくるURIを保存し、管理する • HTTPS接続で通信 • 必要がなくなれば破棄 Push通知をWNSに要求 •
HTTPS接続で通信 • アクセストークンを取得し、チャネルURIに送信
サーバーの構成の選択 Azure Mobile Services などの BaaS • お手軽な反面、できないこともある • Azure
Mobile Sercice (無償の範囲)では、1つのスケジュールジョブからしか送信できない Azure Web Site など ASP.NET アプリ • クライアントと同じC# (VB)を使える • Web Site では制約があったり、有償だったりする Node.js + mongodb など • 自分の得意な言語やミドルウェアで! • この組み合わせだと無料で使えるクラウドサービスも多い
通知要求のリクエスト nodeなどのライブラリを使えば隠ぺいされますが、 他の言語でHTTPリクエストを投げる際に必要になります。 Node.js では、 https://github.com/tjanczuk/wns Azure Mobile Service の
JavaScript Refernceは http://www.windowsazure.com/en- us/develop/mobile/how-to-guides/work-with-server-scripts/?fb=ja-jp (おそらく実体は同じ)
アクセストークンの要求 (C#)
通知要求の送信HTTP ヘッダ • 認証ヘッダ Authorization • wns/toast | wns/badge |
wns/tile | wns/raw X-WNS-Type • cache | no-cache X-WNS-Cache-Policy • Trueにすると、応答でデバイスの状態と通知の状態が返る X-WNS-RequestForStatus • タイル通知のみ。タグを指定 X-WNS-Tag • 通知の TTL (有効期限)を秒で指定。トースト通知では無効 X-WNS-TTL
通知応答のレスポンス ただ送信するだけではなくて、その送信結果がどうだったのか確認しよう クライアントのURLがなくなっているとか 送信量が多いとか WNS側で何か問題があるとか トラブル時の解決に必要な情報がふくまれています
DEMO デバッガとUnitTestを使ったWNSと通信するテスト
通知要求のHTTPレスポンスステータス(抜粋) • OK 200 • アクセストークンが無効 401 • パッケージマニフェストなどの設定が無効(設定バグ) 403
• URIが使えないので、これ以上送信しない 404/410 • 通知が多すぎるので減らす 406 • 通知のサイズが大きすぎる(5KB以上)ので減らす 413 • サポートへ 5xx
通知要求のサンプル(C#)
通知要求の応答とそのハンドル(C#)
まとめ ユーザーに使ってもらうために、Push通知を使ってみよう サーバーサイドの実装は自分の好み、要件に合わせて決めよう 安定して使うには、サーバーサイドの通知の送信を うまくハンドリングしよう