iosでpush通知を使う手順［parseに登録/push通知の音を設定etc..］【初心者向け】


今更ながらpush通知をparse.comを使って実装してみた。
世の中に腐るほどやり方でてるけど、ちょっと詰まったのでメモ。

一応ググると最初に、
[Parse.comを使ったiOSデバイスへのプッシュ通知[導入編]](http://www.riaxdnp.jp/?p=6650)が出てくるので重複する所は全てこの記事におまかせする。

##Parse.comに登録
まずは、[Parse](https://www.parse.com)に登録してください。
無料で30req/sまで対応してくれて超素敵。

##push通知を行うアプリを登録

![アプリ作成.png](https://qiita-image-store.s3.amazonaws.com/0/5365/4c714cb8-a3fe-2872-d27b-6cdb00f77c47.png "アプリ作成.png")

誘導に従って登録してください。

##AppID/通知用証明書の作成

####ここの操作はsafariを使って実行してください。
※一部別ブラウザだと動かないため(個人談)

[Parse.comを使ったiOSデバイスへのプッシュ通知[導入編]](http://www.riaxdnp.jp/?p=6650)の

1.App IDの作成
2.通知用証明書の作成

まで実行してください。

##プロビジョニングファイルの作成

プロビジョニングファイルってなに？って方は[こちら](http://foreignkey.jp/archives/1414)を参考にしてみて下さい。

#####現在既に開発中のアプリとプロビジョニングファイルを紐付けていて、後からpush通知を許可する場合は再度プロビジョニングファイルの更新が必要です。
僕はここでハマってました。。。とほほ

始めて作る方は、下記の手順で。

![ プロビジョニング.png](https://qiita-image-store.s3.amazonaws.com/0/5365/9c70e21a-3682-965b-603f-d872dbd39eab.png " プロビジョニング.png")

次の画面でApp IDを選択。

![appis.png](https://qiita-image-store.s3.amazonaws.com/0/5365/6accdfb8-23e0-9b29-335d-3fb90f81b44b.png "appis.png")

その後、userとdeviceを紐付けてgenerate実施。

![あ.png](https://qiita-image-store.s3.amazonaws.com/0/5365/a75b70f2-20bb-4364-4581-48d2c4d037f9.png "あ.png")

※恐らくsafariだと1分程度で完了するかと思います。

その後DLしてください。

##Parseに証明書を登録

[Parse.comを使ったiOSデバイスへのプッシュ通知[導入編]](http://www.riaxdnp.jp/?p=6650)の

4.Parseに証明書を登録

を実施してください。

##Xcodeに登録

①Bundle IDの設定

![bundle id.png](https://qiita-image-store.s3.amazonaws.com/0/5365/0cd8af31-c93e-3b3e-e0f0-954bdc753d48.png "bundle id.png")

②プロビジョニングファイルの設定

![プリ美女.png](https://qiita-image-store.s3.amazonaws.com/0/5365/aecabf96-ba21-999e-f936-dd9bbd48b17f.png "プリ美女.png")

##XcodeにParseのSDKを追加

[本家のサイト](https://www.parse.com/apps/quickstart#parse_push/ios/existing)を見ながら実施してみてください。

ちなみに僕の場合はcocoapodsでSDKはインストールしました。
cocoapodsでやるとFacebookのSDKも同時にインストールされます。
それが嫌な方は[こちらの記事](http://d.hatena.ne.jp/shu223/20140112/1389566434)を参照してみて下さい。

##Xcodeに実装/push通知を試してみる

[Parse.comを使ったiOSデバイスへのプッシュ通知[導入編]](http://www.riaxdnp.jp/?p=6650)の

5.Xcode上で実装
6.Parseからプッシュ通知を送る

を実施してください。

##アプリからpush通知を送ってみる
これは最低1台のiphoneとmac上でのシュミレータが必要です。

まずはこのようにchanelを好きなものに設定します。

```MBCAppDelegate.h
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    PFInstallation *currentInstallation = [PFInstallation currentInstallation];
    [currentInstallation setDeviceTokenFromData:deviceToken];
    currentInstallation.channels = @[@"test_push"];
    [currentInstallation saveInBackground];
}

```

その後、pushを行いたいactionの部分に下記を追加。
その他カスタマイズで使えそうなプロパティは[公式ドキュメント](https://www.parse.com/docs/push_guide#options-data/iOS)をみてもらえれば分かります。
今回はメッセージと音楽の設定をします。

```
 NSDictionary *data = [NSDictionary dictionaryWithObjectsAndKeys:
                          @"好きなアラートメッセージ", @"alert",
                          @"fileのpath", @"sound",
                          nil];
 PFPush *push = [[PFPush alloc] init];
 [push setChannels:[NSArray arrayWithObjects:@"test_push", nil]];
 [push setData:data];
 [push sendPushInBackground];
```

実機側にもbuildしてシュミレータで上記のアクションを実施してみてください。

![実機.png](https://qiita-image-store.s3.amazonaws.com/0/5365/0767b941-2b94-950e-feaf-5c467a80866b.png "実機.png")

意図通りの音楽とメッセージが表示されましたか？
さすが天下のparseさん超便利です。