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
540
ぼくの考えた割と普通(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
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
700
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
120
祝!Iceberg祭開幕!re:Invent 2024データレイク関連アップデート10分総ざらい
kniino
2
250
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
240
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
130
kargoの魅力について伝える
magisystem0408
0
200
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
NW-JAWS #14 re:Invent 2024(予選落ち含)で 発表された推しアップデートについて
nagisa53
0
250
OpenAIの蒸留機能(Model Distillation)を使用して運用中のLLMのコストを削減する取り組み
pharma_x_tech
4
550
Turing × atmaCup #18 - 1st Place Solution
hakubishin3
0
470
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Optimizing for Happiness
mojombo
376
70k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Music & Morning Musume
bryan
46
6.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Automating Front-end Workflow
addyosmani
1366
200k
Agile that works and the tools we love
rasmusluckow
328
21k
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通知を使ってみよう サーバーサイドの実装は自分の好み、要件に合わせて決めよう 安定して使うには、サーバーサイドの通知の送信を うまくハンドリングしよう