2015年11月6日金曜日

Swift2 + APNsPHP でRemote Notification する時のメモ (バッジを増やしたりする)

なんか、あんまり日本語の解説が少ないのでメモ。
てか、手元にMacがないので記憶から書く羽目になりますが。

下準備 ( 認証キーだのなんだのの事 )

→ENTRUST からダウンロードしてくるやつだとなんかうまく動かなかったので、
 自分で .p12 作ってから .pem 作らなきゃだめです。
 キーチェーンアクセス?で右クリックから .p12 が作れなくて .pem が直接作れちゃう時は、
 左下の「自分の証明書」だかを選んで、その中で右クリックすると .p12 作れます。
 兎に角、ターミナルで openssl して、
 cert と key が合っててapple のpush のサーバに接続できるか、
 ちゃんと確認しましょうね。
 あと、ProvisioningFile?をちゃんと設定して書きだしても、
 なんか勝手に設定が変わっていることがあるので、
 build 時にエラーになる場合は、developer center で確認しましょう。

アプリの設定をする

→Capabilitiesを開いて、プッシュを有効に、
 バックグラウンドを有効にして、
 バックグラウンドと通知をオンにしましょう。


アプリ側のコードを書くとき

→プッシュ関連はAppDelegateに書いていきます。
 Viewの方に書くことはない気がする。
 全体的な流れは、
 application(...didFinishLaunchingWithOptions...)で、
 アプリの初期化時にプッシュのアクションのidentifyとか、
 カテゴリのidentifyとか
 バッジ・音・バイブの設定とかを設定させて、
 application(...didRegisterForRemoteNotificationsWithDeviceToken...)に、
 トークンを貰った時の処理を書きます(大概の人はサーバに送ると思う)。

 application(...didReceiveRemoteNotification...) で
 通知自体が端末に届いた瞬間の処理を切り分けさせます。
 通知が届いたときに、アプリがForegroundにあるかInactiveか、
 はたまたBackgroundにあるかが大事なのですが、
 バッジの値を増やす時は、
 UIApplicationState.Background で、バッジの値を増やす処理をさせます。
 Swift1.x では UIApplicationStateBackground だったみたいですが、
 Swift2 で UIApplicationState.Background に書き方が変わったみたいです。

 バッジを消す時は、applicationWillEnterForeground() か
 applicationDidBecomeActive()のどっちかでやりました。
 どっちでやったか忘れた。お前の記憶ガバガバじゃねぇかよ。

 で、通知をタップした時の処理を
 application(handleActionWithIdentifier...forRemoteNotification...completionHandler)で、
 設定したアクションごとに処理させます。

サーバ側のコードを書くとき(APNsPHPの場合)


→基本的にはみんなが知ってるサンプルのコードを書けばよいと思いますが、
 重要なのは、
 $mes->setCategory("HOGEHUGA")
 で、カテゴリのidentifyと同じ値を設定してやることと、
 $mes->setContentAvailable(true)
 で、バックグラウンド時の受け取り(Silent Push? Silent Notification?)も
 有効にしてあげることです。

大体ハマりどころ(ハマりどころさん?!マズいですよ…)はこんな感じすかね。
言語、仕様。(Azにゃん)の変更がガバガバだからね。しょうがないね。
赤い文字との戦いだってそれ一番言われてるから。

以下参考サイト

下準備 (公開鍵の作成とか)
 http://d.hatena.ne.jp/samril/20130902/1378198909

アプリの設定 (Capablities)
 http://dev.classmethod.jp/references/ios-background-fetch/

単純にプッシュ通知だけやる場合(gistにコードもあって…いいケツしてますねぇ…(ONDISK))
 http://qiita.com/sawapi/items/feba100851de47fbe412

複数アクションのプッシュ通知(Objective-CとSwift1どっちも書いてて、涙が、で、出ますよ…)
 http://qiita.com/Night___/items/7ff61699c443f2d9a117

0 件のコメント:

コメントを投稿