概要
WEBアプリ(Rails)からiOSアプリ(Swift)にプッシュ通知を送る。
特定のユーザのみに通知が遅れるようにする。
プッシュ通知とは?
アプリ内でプッシュ通知を行うこともできるんですが、外部から通知を行うことも可能です。
アプリ内のプッシュ(ローカルプッシュ)と外部からのプッシュ(リモートプッシュ)の使い所は
僕は以下のように考えています。
・ローカルプッシュ
スケジューリングされたイベントを通知する場合
処理の完了や開始などを通知
メリット 簡単
デメリット 外部からの情報をプッシュするためには一手間必要
⇨ データ通信機能を自作してアプリ内でプッシュ
・リモートプッシュ
外部主体の通知をする場合
一斉に情報を通知したい場合
メリット とにかく便利
デメリット 手間
構成
本来ならプッシュ通知のために複雑な構成をしなくてはいけないところを、
簡単なコーディングでプッシュ通知が実現できます。
管理コンソールからプッシュ通知をするだけならRailsサーバなしの構成でも大丈夫です。
【Swift】mobile backend を利用したpush通知 http://qiita.com/tdaiku/items/6471906e578435a8b3ed
サーバから送信するために
1 vendor/assets/javascripts にmobile backendにて提供されているJavascriptファイルを配置
2 app/assets/javascripts/application.jsに
//= require ncmb-latest.min.js
を追記
3 処理を行う機能のcoffee scriptファイルに
NCMB.initialize("APP_KEY", "CL_KEY");
NCMB.Push.send {
'immediateDeliveryFlag': true
'target': ['ios']
"searchCondition":
"deviceToken": "deviceToken"
'badgeIncrementFlag': false
'deliveryExpirationTime':'10 day'
'title': 'title'
'message': 'message'
},
success: ->
alert 'Successful!'
# 成功
return
error: (error) ->
# エラー
alert 'Failed'
return
・deleveryExpirationTimeをセットしないとなぜか送られなかった
・ユーザ単体に送信する機能のためにiOSアプリからdeviceTokenを随時RailsSVに送信している
⇨OSアップデートなどでdeviceTokenが変わる可能性があるらしいので、、、
⇨端末のdeviceTokenはNCMBInstallation.currentInstallation().deviceToken
で取得できる
・targetは準備されていない方が入っている場合、指定しないと配信エラーになる
⇨androidはキーを設定、iOSは証明書を設定する必要がある
まとめ
日本語のドキュメントがあるって素晴らしい。
ただなかなかマニュアルが見辛いです。
APIリファレンスを見ていても、パラメータのセット例が書いてなかったりしてセットの方法がわからなかったりします。
http://mb.cloud.nifty.com/doc/
iOS、Android、javascriptの切り替えがコンボボックスってのも操作性が悪いですね。
ライブラリが整備されていて、きちんとした管理画面があるので自作するコストを考えればかなり楽です。
オススメ。
有料プランの導入も視野に入れていこうかと思います。