複数のアプリに対してParse.comを介してPush通知を送りたい場合、Webインターフェースでポチポチやるのは効率が悪く、とても辛い作業になってしまいます。Parse.comのサイトはレスポンスが少し遅いなと感じる程度である上に、1回1回が退屈な作業を何度も繰り返すことになるのでミスも入り込み易いのです。当然ですが、自動化・半自動化をするのが望ましいでしょう。
複数種類のiPhoneアプリを同時開発するときのTips - 株式会社CFlatの明後日スタイルのブログ
REST API用のKEY
REST APIを使うためには、アプリケーションIDとREST API用のアプリケーションキーが必要です。これらのキーを自動化スクリプトなり、専用のファイルなり、どこかに転載しておきます。
なお、iOS用のアプリケーションキーとREST API用のアプリケーションキーは異なります。
Rubyクライアント
REST APIはcurl
のようなコマンドから呼び出すことも可能ですが(Push Developer Guide | Parse)、スクリプト言語から呼び出した方が楽だと個人的には思います。
私が常用しているRubyにはparse-ruby-client
というgemがあったのでこちらを使うことにしました。
使い方
user_1
というチャンネルに該当するiOSデバイスにデータを送る、という処理を次のコードで実現できます。
require "parse-ruby-client" Parse.init(application_id: id, application_key: key) data = { :alert => "This is a notification from Parse" } push = Parse::Push.new(data, "user_1") push.type = "ios" push.save
全デバイスに送る
先ほどの例はとあるチャンネルに該当するユーザーにのみ通知を出す方法なんですが、今回はチャンネルではなくユーザー全体を対象にしようとしていました。
そこでチャンネルを空にしてやればいいだろうとParse::Push.new(data, "")
やParse::Push.new(data, nil)
などを試したところ、これでは0人に対してのpush通知を発行するという意味になるらしく失敗に終わりました。
どうやらREST API本体に存在しているwhere
というパラメータに空のjsonを渡せばいいということでした。このラッパーの場合はこのように書く必要があります。
require "parse-ruby-client" Parse.init(application_id: id, application_key: key) data = { :alert => "This is a notification from Parse" } push = Parse::Push.new(data) push.where = {} push.save
データファイルのサンプル
複数のアプリケーションにプッシュ通知を送るスクリプトですが、実際にはRakeタスクとして定義しました。前提としては、アプリケーションIDやREST用のキーはyamlファイルに書いてあります。
app1: parse_id: APP_ID_1 parse_rest_key: APP_REST_KEY_1 ... app2: parse_id: APP_ID_2 parse_rest_key: APP_REST_KEY_2 ... app3: ...
タスク本体はこんな感じです。
require "yaml" require "parse-ruby-client" task :push do config = YAML.load_file( File.expand_path("../../data.yml", __FILE__) ) config.keys.each_with_index do |key| parse_id = config[key]["parse_id"] rest_key = config[key]["parse_rest_key"] data = { alert: "alert title", message: "alert message" } # ParseのREST APIを使うコード Parse.init(application_id: parse_id, api_key: rest_key) push = Parse::Push.new(data) push.where = {} push.save end end
これで半自動化できるようになりました。通知内容がハードコードされているので何回も使うのには適しません。そのような場合は通知内容の部分を分離し、引数のjsonファイルから読み込むなどの工夫が必要となります。
iPhone/Android 「通知機能」プログラミング徹底ガイド (for Smartphone Developers)
- 作者: 神原健一,高橋和秀,山田暁通
- 出版社/メーカー: マイナビ
- 発売日: 2013/12/07
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る