FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

プッシュ通知が正しく送れるか、ローカルでデバッグしましょう(Android編)

前回のiOSに続いて、今回はAndroid端末におけるプッシュ通知のデバッグ法を紹介します。Androidにおいてもプッシュ通知を送ったのに届かない、記載に何かミスがあると言ったことはよくあるので、まずローカルでテストしてみるとエラーの切り分けにつながるはずです。

前提条件

APIキーを設定し、データストアにデバイストークンが登録されていることとします。そこまでの流れ(GCMの設定やAndroidアプリ側でのコーディングなど)についてはプッシュ通知 (Android) : 基本的な使い方 | ニフティクラウド mobile backendを参照してください。

Rubyライブラリのインストール

Rubygemsで配信されているGCMというライブラリを使います。

gem install gcm

サンプルコード

以下のようなサンプルコードを書きます。

require 'gcm'

API_KEY="YOUR_API_KEY"
gcm = GCM.new(API_KEY)

registration_ids = [ 'YOUR_DEVICE_TOKEN' ]

option = { :data => {'message' => 'プッシュ通知のテスト'} }
response = gcm.send_notification(registration_ids, option)

if response[:body]
  puts JSON.parse(response[:body])
end

ここで、YOUR_API_KEYはmBaaSの管理画面で、アプリ設定のプッシュ通知より取得できます。

また、YOUR_DEVICE_TOKENはデータストアのInstallation、deviceTokenの欄から取得できますのでそれぞれ書き換えてください。

プッシュ通知を送信する

後はこのスクリプトを実行するだけです。

$ ruby push-android.rb 
{"multicast_id"=>7664310508036817667, "success"=>1, "failure"=>0, "canonical_ids"=>0, "results"=>[{"message_id"=>"0:1470302066740542%02027697f9fd7ecd"}]}

このようにsuccessが1となっていれば問題ありません。

例えばAPIキーが間違っていると次のようになります。

$ ruby push-android.rb 
json/common.rb:156:in `parse': 784: unexpected token at '<HTML> (JSON::ParserError)
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
'
    from json/common.rb:156:in `parse'
    from push-android.rb:14:in `<main>'

また、デバイストークンが不正な場合は次のようになります。

$ ruby push-android.rb 
{"multicast_id"=>5700894011667254369, "success"=>0, "failure"=>1, "canonical_ids"=>0, "results"=>[{"error"=>"InvalidRegistration"}]}

このようにしてローカルで試すことでエラーの確認がしやすくなります。何かおかしいと思った時にはローカルで試してみてください。

プッシュ通知 (Android) : 基本的な使い方 | ニフティクラウド mobile backend