Project

speedy_gcm

0.01
No commit activity in last 3 years
No release in over 3 years
Speedy GCM efficiently sends push notifications to Android devices via GCM (Google Cloud Messaging).
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies
 Project Readme

Speedy GCM

Speedy GCM sends push notifications to Android devices via Google's GCM (Google Cloud Messaging for Android).

Pull requests are welcome!

What is this GCM gem more awesome?

  • Simple Ruby implementation.
  • No dependencies.
  • Implemented against the JSON based service for GCM. If you need text/plain support look elsewhere.
  • Validation of your message options.
  • Test coverage
  • Simple way to test your android client from the command line

##Installation

$ gem install speedy_gcm

##Requirements

An Android device running 2.2 or newer, its registration token, and a Google account registered for gcm.

Also, make sure 'net/http' and 'net/https' are available:

require "net/http"
require "net/https"

The 'shoulda' gem is required for testing:

$ gem install 'shoulda'

##Compatibility

Speedy_GCM will work with Rails 3.x & Ruby 1.9x. It has not been tested on previous versions or Rails or Ruby, and may or may not work with those versions.

##Usage

For a Rails app, a good place to put the following would be in config/initializers/speedy_gcm.rb :

GCM_API_KEY = "YOUR API KEY"

SpeedyGCM::API.set_account(GCM_API_KEY)

Then, where you want to make a GCM call in your code, create an message_options hash and pass it to send_notification():

message_options = {
  :registration_ids => [<array of registration ids>],
  # optional parameters below.  Read the docs here: http://developer.android.com/guide/google/gcm/gcm.html#send-msg
  :collapse_key => "foobar",
  :data => { :score => "3x1" },
  :delay_while_idle => false,
  :time_to_live => 1
}

response = SpeedyGCM::API.send_notification(message_options)

puts response[:code]  # some http response code like 200
puts response[:data]  # usually nil is returned

Note: there are blocking calls in both .set_account() and .send_notification(). You should use an async queue like Sidekiq to ensure a non-blocking code path in your application code, particularly for the .send_notification() call.

##Testing

To test, first fill out these variables in test/test_speedy_gcm.rb:

GCM_API_KEY = "TODO - Fill in with your GCM API Key"
TEST_PHONE_GCM_REGISTRATION_ID = "TODO - Fill in with some valid GCM Registration ID"

then run:

$ ruby test/test_speedy_gcm.rb

##Copyrights

  • See LICENSE.txt for details.