Windows Azure Toolkit for Windows 8を使うとPush通知用のサーバーをWindows Azure上で構築したりする雛形をゲットできます。
でもCloud Service使うしVisual Studio 2012 RCじゃテンプレートないしそもそもWin8RPにToolkit対応してないしソースも公開されてないしでもう(ry
※そのうち対応すると思いますが…
というわけで、Windows Azure Webサイトで動くようにPush通知サーバー用のプロジェクトをいじってみました。
使い方
Windows Azure Webサイト用にまとめたWebDeployパッケージをダウンロードしてWebサイトへアップロードします。
もしくはソース持ってきてgit push azure masterするなりTFSするなりWebDeployするなりどうぞ。
デプロイ完了後、Configureページで設定を追加します。
- AdministratorEmail … サイト管理者のEmailアドレス
- AdministratorName … サイト管理者のユーザー名(ログインに必要)
- AdministratorPassword … サイト管理者のパスワード(ログインに必要)
- DataConnectionString … Windows Azure Storageへの接続文字列
- TileImagesContainer … Push通知に使用する画像を保存するWindows Azure Blobストレージのコンテナ名
- WNSPackageSID … WNSに登録されているパッケージのSID(ms-app://~で始まる文字列)
- WNSClientSecret … WNSに登録されているクライアントシークレットキー
※この手順、WebDeployのパッケージに纏められそうですが本題じゃないので見てません。
あとは実際につないでみましょう。エラーなくログイン画面が出ればOKです。
おしまい。
クライアント側は普通に「Windows8.Notifications」をNuGetから入手して以下のように(というかドキュメント通り)Pushサーバーに登録すればOKです。
登録が問題なければチャネルができてるので、Webサイト側から通知すれば正しく動作するかと思います。
こんな感じですね。
細かい修正点
大したことはしてないのですがメモ程度に。
- ポートのバインディングはWebサイトじゃできなさそうなので削除
- RoleEnvironment使うのやめてWeb.configから参照するように変更
- Blobコンテナがなければ作るように変更
- Blobへファイルアップロード時に日本語ファイル名だと落ちるのでUrlEncodeするように変更
- など
もともと自前証明書を用意したりしてたのが、Webサイトを使うことでSSLも使えるし簡単ですね。(面倒だったのでリダイレクト回りのコードを消してしまいましたが)
まぁもともとサンプル的な扱いな気もするので後は自己責任でご自由にどうぞ。