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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
tanaka_733
May 11, 2013
Technology
0
2k
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
11k
Calling PowerShell from CSharp
tanaka733
0
1.9k
Garbage Collection in .NET Framework
tanaka733
4
2.9k
New Features in Visual Studio 2013
tanaka733
0
1.1k
Starting Unity for Windows Store App
tanaka733
0
850
とあるインフラエンジニアのAzure活用
tanaka733
2
610
ぼくの考えた割と普通(c)なデプロイ戦略
tanaka733
1
11k
ASP.NET MVC4 Web APIをバックエンドにして作るストアとWindows Phoneプッシュ通知アプリ
tanaka733
0
1.8k
Yurufuwa_CSharp.pdf
tanaka733
0
5.1k
Other Decks in Technology
See All in Technology
内製AIチャットボットで学んだDatadog LLM Observability活用術
mkdev10
0
100
元エンジニアPdM、IDEが恋しすぎてCursorに全業務を集約したら、スライド作成まで爆速になった話
doiko123
1
620
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
150
進化するBits AI SREと私と組織
nulabinc
PRO
0
140
AWS DevOps Agent vs SRE俺 / AWS DevOps Agent vs me, the SRE
sms_tech
3
630
Claude Code Skills 勉強会 (DevelersIO向けに調整済み) / claude code skills for devio
masahirokawahara
1
19k
タスク管理も1on1も、もう「管理」じゃない ― KiroとBedrock AgentCoreで変わった"判断の仕事"
yusukeshimizu
5
2.6k
Scrumは歪む — 組織設計の原理原則
dashi
0
160
オレ達はAWS管理をやりたいんじゃない!開発の生産性を爆アゲしたいんだ!!
wkm2
4
510
非情報系研究者へ送る Transformer入門
rishiyama
11
7.4k
クラウド × シリコンの Mashup - AWS チップ開発で広がる AI 基盤の選択肢
htokoyo
2
240
AI時代のSaaSとETL
shoe116
1
140
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
750
Being A Developer After 40
akosma
91
590k
Faster Mobile Websites
deanohume
310
31k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
290
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
GraphQLとの向き合い方2022年版
quramy
50
14k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Believing is Seeing
oripsolob
1
83
The SEO identity crisis: Don't let AI make you average
varn
0
410
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
450
Deep Space Network (abreviated)
tonyrice
0
90
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通知を使ってみよう サーバーサイドの実装は自分の好み、要件に合わせて決めよう 安定して使うには、サーバーサイドの通知の送信を うまくハンドリングしよう