1

私はレールに慣れていないので、gem gcm_on_railsを追加することで、レール内の既存のサーバーをサードパーティのアプリケーションサーバーに変更できるかどうかを知りたいと思っていました。この前提でgemをインストールし、コンソールのコードを使用してgcmサーバーにメッセージをプッシュしました

   device = Gcm::Device.create(:registration_id =>"APA91bGJSaiKkCm_h9w8prWsL_inTMPs8pmCme8dcLpW0_2AKbny4bTXpx823cCfJLDJmO3_ihiww1ZVK0iqToAlPWKFWcBSraGRw6KNB1PsLYJJWvRZJ3bMP0")
   notification = Gcm::Notification.new
   notification.device = device
   configatron.gcm_on_rails.delivery_format = 'json'
   notification.collapse_key = "updates_available"
   notification.delay_while_idle = true
   notification.data = {:registration_ids => ["APA91bGJSaiKkCm_h9w8prWsL_inTMPs8pmCme8dcLpW0_2AKbny4bTXpx823cCfJLDJmO3_ihiww1ZVK0iqToAlPWKFWcBSraGRw6KNB1PsLYJJWvRZJ3bMP0"], :data => {:message_text => "Get on cloud nine"}}
   notification.save
   Gcm::Notification.send_notifications

そして、私は次のような応答を得ています

response = {:code=>200, :message=>nil}

しかし、上記の宝石自体のドキュメントでは、message=>nilが表示されていてもメッセージが送信された可能性があると述べています!

メッセージが送信され、前述の registerid を持つ Android アプリケーションも作成されていると想定していますが、通知も受け取っていません

このシナリオに関するヘルプをいただければ幸いです

ありがとうございました

4

1 に答える 1

0

gem ' gcm ' を使用しました。GCM経由でAndroidアプリにデータを送信する方が良いことがわかりました. また、ほぼリアルタイムで応答します。Rails サーバーをセットアップし、次のコードを使用してメイン ディレクトリにスクリプトを追加するだけです。

require 'gcm'
api_key = 'your-gcm-api-key'
gcm = GCM.new(api_key)
registration_ids= ["client_reg_id1","client_reg_id2"] # an array of reg ids of app clients
options = {"label"=>"data"}
response = gcm.send_notification(registration_ids, options)

ruby -rubygems script.rbRails サーバーを起動し、コマンド ラインからこのスクリプトを実行すれば完了です。

于 2013-03-22T05:09:53.797 に答える