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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
tanaka_733
May 11, 2013
Technology
2k
0
Share
Windows ストアアプリで Push通知を使いこなそう
2013/5/11 Community Open Day 2013 東京会場 ルームB 11:00~のセッション
tanaka_733
May 11, 2013
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.9k
Yurufuwa_CSharp.pdf
tanaka733
0
5.1k
Other Decks in Technology
See All in Technology
AIでAIをテストする - 音声AIエージェントの品質保証戦略
morix1500
1
140
コードや知識を組み込む / Incorporate Code and Knowledge
ks91
PRO
0
170
AIを共同作業者にして書籍を執筆する方法 / How to Write a Book with AI as a Co-Creator
ama_ch
2
150
The Journey of Box Building
tagomoris
4
3.4k
Keeping Ruby Running on Cygwin
fd0
0
180
20260423_執筆の工夫と裏側 技術書の企画から刊行まで / From the planning to the publication of technical book
nash_efp
3
430
国内外の生成AIセキュリティの最新動向 & AIガードレール製品「chakoshi」のご紹介 / Latest Trends in Generative AI Security (Domestic & International) & Introduction to AI Guardrail Product "chakoshi"
nttcom
4
1.4k
AI時代のガードレールとしてのAPIガバナンス
nagix
0
300
プラットフォームエンジニアリングの実践 - AWS コンテナサービスで構築する社内プラットフォーム / AWS Containers Platform Meetup #1
literalice
1
210
Chasing Real-Time Observability for CRuby
whitegreen
0
200
CloudTrail を見つめ直してみる
kazzpapa3
1
110
Pure Intonation on Browser: Building a Sequencer with Ruby
nagachika
0
150
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
The Pragmatic Product Professional
lauravandoore
37
7.2k
Music & Morning Musume
bryan
47
7.2k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
The Language of Interfaces
destraynor
162
26k
Between Models and Reality
mayunak
3
270
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Building Adaptive Systems
keathley
44
3k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
160
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
280
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
360
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通知を使ってみよう サーバーサイドの実装は自分の好み、要件に合わせて決めよう 安定して使うには、サーバーサイドの通知の送信を うまくハンドリングしよう