AndroidでParse.comからプッシュ通知をする方法(eclipse作業編)　

**(2014/04/23時点)**

・【AndroidでParse.comからプッシュ通知をする方法(eclipse作業編)】
------------------------------------------------------------------
AndroidでParse.comからプッシュ通知をする方法をメモ。

プッシュ通知を行うためには以下２つの作業が必要となる。
　・Parse.comでの登録作業(webサイト)　←ココの説明は[こちら](http://qiita.com/t-ohtake/items/ea06738ba5a530bf378a)から
　・Androidアプリのプログラム変更(eclipse)　←今回はココの説明

今回はeclipseでの作業について記載する。

eclipseでの作業を簡単にまとめると以下の通り。
　①新規プロジェクトを作成する
　②Prase.comのサイトからParse.jarを取得する
　③取得したjarをプロジェクトに入れる
　④AndroidManifest.xmlを変更する
　⑤メインクラスのonCreateメソッド内を変更する

**■eclipseでの作業**
==================================================================
①新規プロジェクトを作成する
------------------------------------------------------------------
まずは新規にプロジェクトを作成する。(androidSDK等のインストールは完了している前提で説明を記載します)

eclipseを開き[ファイル]-[新規]-[ **Androidアプリケーション・プロジェクト** ]を選択
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/41775/bc244887-55d4-963f-8d3e-7fde64f63ae6.png)

「アプリケーション名」「プロジェクト名」を入力し、「 **次へ** 」を選択
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/41775/eb3b9bdd-6ca8-a454-0b90-9927246525e8.png)

以降のページでは任意に内容を選択し「完了」ボタンが出てくるまで「 **次へ** 」へボタンを押下し、「 **完了** 」ボタンが出てきたら押下する。
・
(途中のページ省略)
・
・
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/41775/b4e91ba8-e9b6-de81-c237-e8166578af6f.png)

これでプロジェクトの作成は完了。

eclipse上に↓こんなプロジェクトが作成されているはず・・・・。
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/41775/b98e6a22-600b-1963-e2fa-75dc8fc4805e.png)



②Prase.comのサイトからParse.jarを取得する
------------------------------------------------------------------
次にParseと連携する上で必要になるjarをParseのサイトから取得する。
Parseのサイトへログインを行い以下の場所からjarを取得する。
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/41775/92e2b594-2bc3-3f6b-109e-2ab86a03b037.png)

※ダウンロードしたzipを解凍すると中に「Parse-1.4.3.jar」が入っているため、それを使用する。


③取得したjarをプロジェクトに入れる
------------------------------------------------------------------
取得したjarはそのままでは使用できないためeclipseで作成したプロジェクトのlibsの中に入れビルドの指定を行う。
![bf3a0f2c-a0bd-dccc-490b-bc6f044ed9bd.png](https://qiita-image-store.s3.amazonaws.com/0/41775/547e9498-cb24-c8d4-148b-e8c7c53798ae.png)


プロジェクト上で[右クリック]-[ビルド・パス]-[ **ビルド・パスの構成** ]を選択
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/41775/fcf40020-998d-8a53-86b3-52c0f50333b1.png)

[ライブラリ]タブより「jar追加」を選択し「 **OK** ]を押下
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/41775/88123389-e404-8072-0bd8-599f4e132e74.png)

先ほどlibsに入れたjarを選択し「 **OK** ]を押下
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/41775/9d8ef17a-9e2f-4721-df56-a54068c538bf.png)


④AndroidManifest.xmlを変更する
------------------------------------------------------------------
(１)レシーバーの定義を記述する。

```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>
		<receiver android:name="com.parse.GcmBroadcastReceiver"
		    android:permission="com.google.android.c2dm.permission.SEND">
		  <intent-filter>
		    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
		    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
		    <category android:name="com.example.test" />
		  </intent-filter>
		</receiver>
```
上記で注意すべきなのが、自分のプロジェクトによって変更するべき箇所が存在すること。

記述の中に存在する\<category>タグの中は自分のプロジェクトのパッケージ名に変更すること。

```xml
<category android:name="com.example.test" />
```

※パッケージ名は以下のところで確認できる。
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/41775/3acce3d1-99e7-8517-61ab-04f5495d9b82.png)

(２)プッシュ通知処理で必要な権限付与を記述する。

```xml
    <uses-permission android:name="android.permission.INTERNET" />
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
	<uses-permission android:name="android.permission.WAKE_LOCK" />
	<uses-permission android:name="android.permission.VIBRATE" />
	<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
	<uses-permission android:name="android.permission.GET_ACCOUNTS" />
	<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
	<permission android:protectionLevel="signature"
	    android:name="com.example.test.permission.C2D_MESSAGE" />
	<uses-permission android:name="com.example.test.permission.C2D_MESSAGE" />
```
上記でも(１)と同じように以下の２箇所の記述を変更する。

```xml
<permission android:protectionLevel="signature"
	    android:name="com.example.test.permission.C2D_MESSAGE" />
	<uses-permission android:name="com.example.test.permission.C2D_MESSAGE" />
```
上記の記載は「パッケージ名 + .permission.C2D_MESSAGE」を指定する。

== 完成形は以下の通り。==
青文字の部分は自分のプロジェクトに合わせて変更したパッケージ名。
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/41775/167cc60b-125d-873d-11c9-95c15fbdb1c1.png)



⑤メインクラスのonCreateメソッド内を変更する
------------------------------------------------------------------
メインクラス(Activity)内にあるonCreate()メソッド内に以下を記述する。

```java
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		
		//追加箇所（１）
		Parse.initialize(this, "アプリケーションIDを入れる", "クライアントIDを入れる");
		
		//追加箇所（２）
		PushService.setDefaultPushCallback(this, MainActivity.class);
		ParseInstallation.getCurrentInstallation().saveEventually();
	}
```

追記箇所(１)のParse.initialize()の中には[(Parse.com作業編)](http://qiita.com/t-ohtake/items/ea06738ba5a530bf378a#2-4)で確認したそれぞれのIDを記述する。

これで、一度アプリを起動後にParse.comのサイトからプッシュ通知が送付できるようになる。

\-----------------------------------------------------------------------------
・Parseからのプッシュ通知送信は[ココ](http://qiita.com/t-ohtake/items/ea06738ba5a530bf378a#2-5)。
\-----------------------------------------------------------------------------

参考まで。

【関連】
[・AndroidでParse.comからプッシュ通知をする方法(Parse.com作業編) ](http://qiita.com/t-ohtake/items/ea06738ba5a530bf378a)
[・Parseからプッシュ通知でAndroidアプリにjsonデータを送る](http://qiita.com/t-ohtake/items/b7a472cd1629266a4544)
[・Parseからプッシュ通知された時のNotification Icon(ﾉｰﾃｨﾌｨｹｰｼｮﾝｱｲｺﾝ)の変更方法](http://qiita.com/t-ohtake/items/46f9204dc7a1fe8e3e4d)

---
[簡単家計簿 Androidアプリ](https://play.google.com/store/apps/details?id=jp.example.keepingbook.app&hl=ja)

[音感診断 Androidアプリ](https://play.google.com/store/apps/details?id=jp.xising.single.app&hl=ja)