gcm 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dbbe0aa081da1b94de83f82e56ffb7c9cdc7869c
4
- data.tar.gz: 319b8cab6eea37aad1f9d852ee85abf146286299
3
+ metadata.gz: 2d3097180eb7e2fdcf713691a11c2d4e9dcc7d89
4
+ data.tar.gz: 8bc696acca36e7b4472a6ceaa1aa69663339e945
5
5
  SHA512:
6
- metadata.gz: 37a76c47d0278b570a3d161f7343038053baf627017ec4a7cf620d716436a53689348b4fc195d26e57fb0c504590aefeb21bba01a9853c25fa08f580b7884a56
7
- data.tar.gz: ee5dc6e0ffe73ca211cfe49126bd46dca629e5ff2086fe06abbd2d756220d31046c3922a50d9d51d1ee99eb43d97b665affd9516c469b65ea3c56b8969d1a4c9
6
+ metadata.gz: 2bc02dc787c817c1b4a3b6a45141f13d62672946e55c927c60cd56ff998b4f8fbef93e8ee1155a56ad62c01d7db0662f56893ec0e03a3f63c86ffbe07e46928f
7
+ data.tar.gz: 4228c061988eec7e0409bea59404ffe1c047f78a4c910738cd0008896516fcccf0268228c9705104741754198eeecb7a0b52948fa29e2912d81d07c763e79bd6
@@ -2,4 +2,5 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
4
  - 2.0.0
5
- - 2.1.3
5
+ - 2.1.5
6
+ - 2.2.0
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Kashif Rasul and Shoaib Burq
1
+ Copyright (c) 2015 Kashif Rasul and Shoaib Burq
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -15,13 +15,14 @@ gem 'gcm'
15
15
 
16
16
  ##Requirements
17
17
 
18
- An Android device running 2.2 or newer and an API key as per [GCM getting started guide](http://developer.android.com/google/gcm/gs.html).
18
+ An Android device running 2.3 or newer and an API key as per [GCM getting started guide](http://developer.android.com/google/gcm/gs.html).
19
19
 
20
20
  One of the following, tested Ruby versions:
21
21
 
22
22
  * `1.9.3`
23
23
  * `2.0.0`
24
- * `2.1.2`
24
+ * `2.1.5`
25
+ * `2.2.0`
25
26
 
26
27
  ##Usage
27
28
 
@@ -59,11 +60,10 @@ response = gcm.create(key_name: "appUser-Chris",
59
60
  ```
60
61
 
61
62
  ### Send to Notification Key
62
- Now you can send a message to a particular `notification_key` via the `send` method. This allows the server to send a single data to multiple app instances (typically on multiple devices) owned by a single user (instead of sending to registration IDs). Note: the maximum number of members allowed for a `notification_key` is 10.
63
+ Now you can send a message to a particular `notification_key` via the `send_with_notification_key` method. This allows the server to send a single data to multiple app instances (typically on multiple devices) owned by a single user (instead of sending to registration IDs). Note: the maximum number of members allowed for a `notification_key` is 10.
63
64
 
64
65
  ```ruby
65
- response = gcm.send([], {
66
- notification_key: "appUser-Chris-key",
66
+ response = gcm.send_with_notification_key("notification_key", {
67
67
  data: {score: "3x1"},
68
68
  collapse_key: "updated_score"})
69
69
  ```
@@ -75,12 +75,12 @@ You can also add/remove registration IDs to/from a particular `notification_key`
75
75
  ```ruby
76
76
  response = gcm.add(key_name: "appUser-Chris",
77
77
  project_id: "my_project_id",
78
- notification_key:"appUser-Chris-key"
78
+ notification_key:"appUser-Chris-key",
79
79
  registration_ids:["7", "3"])
80
80
 
81
81
  response = gcm.remove(key_name: "appUser-Chris",
82
82
  project_id: "my_project_id",
83
- notification_key:"appUser-Chris-key"
83
+ notification_key:"appUser-Chris-key",
84
84
  registration_ids:["8", "15"])
85
85
  ```
86
86
 
@@ -90,15 +90,19 @@ response = gcm.remove(key_name: "appUser-Chris",
90
90
  * [Как отправлять push уведомления из Вашего Rails приложения](http://habrahabr.ru/post/214607/)
91
91
  * [GCM – 서버 만들기](http://susemi99.kr/1023)
92
92
  * [ruby から gcm を使って android 端末へメッセージを送信する](http://qiita.com/ma2saka/items/5852308b7c2855eef552)
93
+ * [titanium alloy android push通知 by ruby](http://shoprev.hatenablog.com/entry/2014/08/30/202531)
93
94
 
94
95
  ## Android Client
95
96
 
96
- You can find an Android Client app to receive notifications from here: [Google Cloud Message - Client Android](https://github.com/mikebolivar/gcm)
97
+ You can find a guide to implement an Android Client app to receive notifications here: [Implementing GCM Client](https://developer.android.com/google/gcm/client.html).
97
98
 
98
99
  ## ChangeLog
99
100
 
101
+ ### 0.1.0
102
+ * Added `send_with_notification_key` to send message to a notification key since the documented API for it is [wrong]( http://stackoverflow.com/questions/19720767/gcm-user-notifications-missing-registration-ids-field/25183892#25183892).
103
+
100
104
  ### 0.0.9
101
- * Check for NotRegistered error and return unregistered ids if this occurs
105
+ * Check for [NotRegistered](http://developer.android.com/google/gcm/adv.html#unreg) error and return unregistered ids if this occurs
102
106
 
103
107
  ### 0.0.8
104
108
  * Added support for User Notifications API
@@ -117,8 +121,13 @@ You can find an Android Client app to receive notifications from here: [Google C
117
121
 
118
122
  ##MIT License
119
123
 
120
- * Copyright (c) 2014 Kashif Rasul and Shoaib Burq. See LICENSE.txt for details.
124
+ * Copyright (c) 2015 Kashif Rasul and Shoaib Burq. See LICENSE.txt for details.
121
125
 
122
126
  ##Many thanks to all the contributors
123
127
 
124
128
  * [Contributors](https://github.com/spacialdb/gcm/contributors)
129
+
130
+ ## Donations
131
+ We accept tips through [Gratipay](https://gratipay.com/spacialdb/).
132
+
133
+ [![Gratipay](https://img.shields.io/gratipay/spacialdb.svg)](https://www.gittip.com/spacialdb/)
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "gcm"
6
- s.version = "0.0.9"
6
+ s.version = "0.1.0"
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["Kashif Rasul", "Shoaib Burq"]
9
9
  s.email = ["kashif@spacialdb.com", "shoaib@spacialdb.com"]
data/lib/gcm.rb CHANGED
@@ -101,6 +101,20 @@ class GCM
101
101
  end
102
102
  alias_method :remove, :remove_registration_ids
103
103
 
104
+ def send_with_notification_key(notification_key, options)
105
+ body = { :to => notification_key }.merge(options)
106
+
107
+ params = {
108
+ :body => body.to_json,
109
+ :headers => {
110
+ 'Authorization' => "key=#{@api_key}",
111
+ 'Content-Type' => 'application/json',
112
+ }
113
+ }
114
+ response = self.class.post('/send', params.merge(@client_options))
115
+ build_response(response)
116
+ end
117
+
104
118
  private
105
119
 
106
120
  def build_post_body(registration_ids, options={})
@@ -30,7 +30,7 @@ describe GCM do
30
30
  :headers => valid_request_headers
31
31
  ).to_return(
32
32
  # ref: http://developer.android.com/guide/google/gcm/gcm.html#success
33
- :body => {},
33
+ :body => "{}",
34
34
  :headers => {},
35
35
  :status => 200
36
36
  )
@@ -40,7 +40,7 @@ describe GCM do
40
40
  uri = URI.parse(send_url)
41
41
  uri.user = 'a'
42
42
  uri.password = 'b'
43
- stub_request(:post, uri.to_s).to_return(:body => {}, :headers => {}, :status => 200)
43
+ stub_request(:post, uri.to_s).to_return(:body => "{}", :headers => {}, :status => 200)
44
44
  end
45
45
 
46
46
  before(:each) do
@@ -50,13 +50,13 @@ describe GCM do
50
50
 
51
51
  it "should send notification using POST to GCM server" do
52
52
  gcm = GCM.new(api_key)
53
- gcm.send(registration_ids).should eq({:response => 'success', :body => {}, :headers => {}, :status_code => 200, :canonical_ids => [], :not_registered_ids => []})
53
+ gcm.send(registration_ids).should eq({:response => 'success', :body => "{}", :headers => {}, :status_code => 200, :canonical_ids => [], :not_registered_ids => []})
54
54
  stub_gcm_send_request.should have_been_made.times(1)
55
55
  end
56
56
 
57
57
  it "should use basic authentication provided by options" do
58
58
  gcm = GCM.new(api_key, basic_auth: {username: 'a', password: 'b'})
59
- gcm.send(registration_ids).should eq({:response => 'success', :body => {}, :headers => {}, :status_code => 200, :canonical_ids => [],:not_registered_ids => []})
59
+ gcm.send(registration_ids).should eq({:response => 'success', :body => "{}", :headers => {}, :status_code => 200, :canonical_ids => [],:not_registered_ids => []})
60
60
  stub_gcm_send_request_with_basic_auth.should have_been_made.times(1)
61
61
  end
62
62
 
@@ -93,14 +93,14 @@ describe GCM do
93
93
  mock_request_attributes
94
94
  ).to_return(
95
95
  # ref: http://developer.android.com/guide/google/gcm/gcm.html#success
96
- :body => {},
96
+ :body => "{}",
97
97
  :headers => {},
98
98
  :status => 400
99
99
  )
100
100
  end
101
101
  it "should not send notification due to 400" do
102
102
  subject.send(registration_ids).should eq({
103
- :body => {},
103
+ :body => "{}",
104
104
  :headers => {},
105
105
  :response => "Only applies for JSON requests. Indicates that the request could not be parsed as JSON, or it contained invalid fields.",
106
106
  :status_code => 400
@@ -114,7 +114,7 @@ describe GCM do
114
114
  mock_request_attributes
115
115
  ).to_return(
116
116
  # ref: http://developer.android.com/guide/google/gcm/gcm.html#success
117
- :body => {},
117
+ :body => "{}",
118
118
  :headers => {},
119
119
  :status => 401
120
120
  )
@@ -122,7 +122,7 @@ describe GCM do
122
122
 
123
123
  it "should not send notification due to 401" do
124
124
  subject.send(registration_ids).should eq({
125
- :body => {},
125
+ :body => "{}",
126
126
  :headers => {},
127
127
  :response => "There was an error authenticating the sender account.",
128
128
  :status_code => 401
@@ -136,7 +136,7 @@ describe GCM do
136
136
  mock_request_attributes
137
137
  ).to_return(
138
138
  # ref: http://developer.android.com/guide/google/gcm/gcm.html#success
139
- :body => {},
139
+ :body => "{}",
140
140
  :headers => {},
141
141
  :status => 503
142
142
  )
@@ -144,7 +144,7 @@ describe GCM do
144
144
 
145
145
  it "should not send notification due to 503" do
146
146
  subject.send(registration_ids).should eq({
147
- :body => {},
147
+ :body => "{}",
148
148
  :headers => {},
149
149
  :response => 'Server is temporarily unavailable.',
150
150
  :status_code => 503
@@ -158,7 +158,7 @@ describe GCM do
158
158
  mock_request_attributes
159
159
  ).to_return(
160
160
  # ref: http://developer.android.com/guide/google/gcm/gcm.html#success
161
- :body => { "body-key" => "Body value" },
161
+ :body => "{\"body-key\" => \"Body value\"}",
162
162
  :headers => { "header-key" => "Header value" },
163
163
  :status => 599
164
164
  )
@@ -166,7 +166,7 @@ describe GCM do
166
166
 
167
167
  it "should not send notification due to 599" do
168
168
  subject.send(registration_ids).should eq({
169
- :body => { "body-key" => "Body value" },
169
+ :body => "{\"body-key\" => \"Body value\"}",
170
170
  :headers => { "header-key" => ["Header value"] },
171
171
  :response => 'There was an internal error in the GCM server while trying to process the request.',
172
172
  :status_code => 599
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gcm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kashif Rasul
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-08 00:00:00.000000000 Z
12
+ date: 2015-01-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -79,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
79
  version: '0'
80
80
  requirements: []
81
81
  rubyforge_project: gcm
82
- rubygems_version: 2.4.2
82
+ rubygems_version: 2.4.5
83
83
  signing_key:
84
84
  specification_version: 4
85
85
  summary: send data to Android applications on Android devices