なんか、あんまり日本語の解説が少ないのでメモ。
てか、手元に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 件のコメント:
コメントを投稿