色々なことができるけど、現状では「各種APIとデータベースを兼ね備えたサーバーアプリケーション」という風に認識され、使われていることが多いみたい。
今回はそんなParseの機能の一つであるNotification(Push 通知)を使って、サーバーサイドの開発無しにPush通知を実装してみる。
ちなみに100万リクエスト/月、1GBストレージまでは無料で使える。
ユーザー登録
www.parse.comへアクセスし、Try it freeボタンからサクっとユーザー登録を行う。
Quick Start
登録が済んだらログインする。自動生成とかスケルトンとかに抵抗がなければそのままQuick Start Guideへ進むと下記のページになる。
Choose your platformでAndroidを選択し、未作成であればCreate an Appあたりからアプリケーション作成を行う。
さらにBlank Android project with Parse SDK(.zip)というリンクから空のAndroidプロジェクトファイルをダウンロードする。Eclipseでダウンロードしたzipファイルを既存のプロジェクトとしてインポートする。
Quick Startの中身
自動生成とかスケルトンとかに抵抗がある場合、何を自動生成しているのか不安でいっぱいになるので、何が起きているのかを簡単にまとめておく。
- 空のAndroidプロジェクトを作成
- SDK(zipファイル)をlibsディレクトリへ設置
- プロジェクトのライブラリエクスポート設定に上記SDKを追加
- Applicationクラスを継承した新規クラスを作成し、onCreateメソッドをオーバーライド。さらにParse.initialize()メソッドの呼び出しを追加
- AndroidManifest.xmlのapplicationタグにandroid:name="作成したAppicationクラス名"を追記
といったことをやったのと同じ。
AndroidManifest.xmlの設定
AndroidManifest.xmlにサービスとブロードキャストレシーバの設定を追加する。
<!-- サービスを登録 -->
<service android:name="com.parse.PushService" />
<!-- ブロードキャストレシーバを登録 -->
<receiver android:name="com.parse.ParseBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
パーミッションの利用設定を追加する。 ※必要最低限のみなので公式ドキュメントのチュートリアルとは少し異なる ※公式ドキュメントには書いていなかったけど、ACCESS_NETWORK_STATEも必要だった<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
参考 : Push Notifications - Parse.com
Application IDとClient Keyの設定
Parseサイトにログインした状態で、アプリケーションのOverviewページを開くと、Application IDとClient Keyが表示されるのでこれをメモしておく。
ParseApplicationクラスのonCreateメソッドに記載されている、Parse.initializeの引数を上記の内容に書き換える。Push通知を受け取るためのコードの追加
前項同様ParseApplicationクラスのonCreateメソッドに下記のコードを追加する。
PushService.subscribe(this, "", ParseStarterProjectActivity.class);
Push通知送信
Parseサイトにログインした状態で、アプリケーションのPush Notificationsページを開くと簡単なPush通知送信管理画面が開くので、適当なメッセージを記入してボタンを押すだけ。
REST APIでPush通知を行う
ParseサイトでのPush通知は、REST APIで以下のリクエストを送信しているっぽい。
送信する内容と受け側のアプリをカスタマイズすれば「Push通知をステータスバーに表示する」というデフォルト動作を変更することができる。
Header
| 項目 | 値 |
| URL | https://api.parse.com/1/push |
| Method | POST |
| X-Parse-Application-Id | アプリケーションID |
| X-Parse-REST-API-Key | REST APIキー |
| Content-Type | application/json |
Body
{
"channels": [ "" ],
"type": "android",
"data": {
"alert": "This is test message."
}
}Push通知で独自の動作を実装する
配信側
REST APIへ送信するJSONデータのalertをactionに変更する。(以下例)
{
"channels": [ "" ],
"type": "android",
"data": {
"action": "jp.blogspot.tomokey.action.SAMPLE",
"msg": "This is test message."
}
}受信側
ブロードキャストレシーバを作成し、インテントフィルタのactionに上記のjp.blogspot.tomokey.action.SAMPLEを指定する。ブロードキャストレシーバの実装は、以下のようにcom.parse.DataをキーとしてJSONデータを取得すれば、あとはお好みの処理を。
public class MyReceiver extends BroadcastReceiver
{
public void onReceive(Context ctx, Intent intent)
{
try
{
// データを取得
Bundle extra = intent.getExtras();
String data = extra.getString("com.parse.Data");
// jsonオブジェクトへパース
JSONObject json = new JSONObject(data);
String msg = json.getString("msg");
Toast.makeText(ctx, msg, Toast.LENGTH_LONG).show();
}
catch (JSONException e)
{
e.printStackTrace();
}
}
念のためブロードキャストレシーバの定義も。
<receiver android:name="MyReceiver">
<intent-filter>
<action android:name="jp.blogspot.tomokey.action.SAMPLE"/>
</intent-filter>
</receiver>



0 件のコメント:
コメントを投稿