urbanairship 2.2.3 → 2.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +51 -21
- data/lib/urbanairship.rb +4 -0
- data/spec/urbanairship_spec.rb +43 -0
- metadata +2 -2
data/README.markdown
CHANGED
@@ -47,6 +47,20 @@ notification = {
|
|
47
47
|
:aps => {:alert => 'You have a new message!', :badge => 1}
|
48
48
|
}
|
49
49
|
|
50
|
+
Urbanairship.push(notification) # =>
|
51
|
+
# {
|
52
|
+
# "scheduled_notifications" => ["https://go.urbanairship.com/api/push/scheduled/123456"]
|
53
|
+
# }
|
54
|
+
```
|
55
|
+
### Using aliases instead of device tokens ###
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
notification = {
|
59
|
+
:schedule_for => [1.hour.from_now],
|
60
|
+
:aliases => ['ALIAS-ONE', 'ALIAS-TWO'],
|
61
|
+
:aps => {:alert => 'You have a new message!', :badge => 1}
|
62
|
+
}
|
63
|
+
|
50
64
|
Urbanairship.push(notification) # =>
|
51
65
|
# {
|
52
66
|
# "scheduled_notifications" => ["https://go.urbanairship.com/api/push/scheduled/123456"]
|
@@ -72,27 +86,6 @@ notifications = [
|
|
72
86
|
Urbanairship.batch_push(notifications)
|
73
87
|
```
|
74
88
|
|
75
|
-
Sending notifications to a segment
|
76
|
-
---------------------------
|
77
|
-
Urban Airship segments let you send a push notification to a subset of relevant users based on location, time, preferences, and behavior. You can read more about segments in the [Urban Airship docs](https://docs.urbanairship.com/display/DOCS/Server%3A+Segments+API).
|
78
|
-
|
79
|
-
```ruby
|
80
|
-
notification = {
|
81
|
-
:schedule_for => [1.hour.from_now],
|
82
|
-
:segments => ['SEGMENT-ID'],
|
83
|
-
:ios => {
|
84
|
-
:aps => {
|
85
|
-
:alert => 'You have a new message!', :badge => 1
|
86
|
-
}
|
87
|
-
},
|
88
|
-
:android => {
|
89
|
-
:alert => 'You have a new message!', :badge => 1
|
90
|
-
}
|
91
|
-
}
|
92
|
-
|
93
|
-
Urbanairship.push_to_segment(notification)
|
94
|
-
```
|
95
|
-
|
96
89
|
Sending broadcast notifications
|
97
90
|
-------------------------------
|
98
91
|
Urban Airship allows you to send a broadcast notification to all active registered device tokens for your app.
|
@@ -138,6 +131,43 @@ Urbanairship.delete_scheduled_push(123456789)
|
|
138
131
|
Urbanairship.delete_scheduled_push(:alias => "deadbeef")
|
139
132
|
```
|
140
133
|
|
134
|
+
Segments
|
135
|
+
---------------------------
|
136
|
+
Urban Airship segments let you send a push notification to a subset of relevant users based on location, time, preferences, and behavior. You can read more about segments in the [Urban Airship docs](https://docs.urbanairship.com/display/DOCS/Server%3A+Segments+API).
|
137
|
+
|
138
|
+
```ruby
|
139
|
+
notification = {
|
140
|
+
:schedule_for => [1.hour.from_now],
|
141
|
+
:segments => ['SEGMENT-ID'],
|
142
|
+
:ios => {
|
143
|
+
:aps => {
|
144
|
+
:alert => 'You have a new message!', :badge => 1
|
145
|
+
}
|
146
|
+
},
|
147
|
+
:android => {
|
148
|
+
:alert => 'You have a new message!', :badge => 1
|
149
|
+
}
|
150
|
+
}
|
151
|
+
|
152
|
+
Urbanairship.push_to_segment(notification)
|
153
|
+
```
|
154
|
+
|
155
|
+
### Listing your segments ###
|
156
|
+
|
157
|
+
```ruby
|
158
|
+
Urbanairship.segments # =>
|
159
|
+
# {
|
160
|
+
# "segments" => [
|
161
|
+
# {
|
162
|
+
# "id" => "abcd-efgh-ijkl",
|
163
|
+
# "display_name" => "segment1",
|
164
|
+
# "creation_date" => 1360950614201,
|
165
|
+
# "modification_date" => 1360950614201
|
166
|
+
# }
|
167
|
+
# ]
|
168
|
+
# }
|
169
|
+
```
|
170
|
+
|
141
171
|
Getting a count of your device tokens
|
142
172
|
-------------------------------------
|
143
173
|
```ruby
|
data/lib/urbanairship.rb
CHANGED
@@ -67,6 +67,10 @@ module Urbanairship
|
|
67
67
|
do_request(:get, "/api/tags/", :authenticate_with => :master_secret)
|
68
68
|
end
|
69
69
|
|
70
|
+
def segments
|
71
|
+
do_request(:get, "/api/segments", :authenticate_with => :master_secret)
|
72
|
+
end
|
73
|
+
|
70
74
|
def add_tag(tag)
|
71
75
|
do_request(:put, "/api/tags/#{tag}", :authenticate_with => :master_secret, :content_type => 'text/plain')
|
72
76
|
end
|
data/spec/urbanairship_spec.rb
CHANGED
@@ -67,6 +67,10 @@ shared_examples_for "an Urbanairship client" do
|
|
67
67
|
FakeWeb.register_uri(:delete, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/device_tokens\/valid_device_token\/tags\/non_existant_tag/, :status => ["404", "OK"])
|
68
68
|
FakeWeb.register_uri(:delete, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/device_tokens\/a_device_token\/tags\/a_tag/, :status => ["500", "Internal Server Error"])
|
69
69
|
|
70
|
+
#Segments
|
71
|
+
FakeWeb.register_uri(:get, /my_app_key\:my_master_secret\@go\.urbanairship.com\/api\/segments/, :status => ["200", "OK"], :body => '{"segments":[{"id":"abcd-efgh-ijkl", "display_name":"test1", "creation_date":1360950614201, "modification_date":1360950614201}, {"id": "mnop-qrst-uvwx", "display_name": "test2", "creation_date":1360950614202, "modification_date":1360950614202}]}')
|
72
|
+
FakeWeb.register_uri(:get, /my_app_key2\:my_master_secret2\@go\.urbanairship.com\/api\/segments/, :status => ["500", "Internal Server Error"])
|
73
|
+
|
70
74
|
# push to segment
|
71
75
|
FakeWeb.register_uri(:post, "https://my_app_key:my_master_secret@go.urbanairship.com/api/push/segments", :status => ["200", "OK"])
|
72
76
|
FakeWeb.register_uri(:post, "https://my_app_key2:my_master_secret2@go.urbanairship.com/api/push/segments", :status => ["400", "Bad Request"])
|
@@ -763,6 +767,45 @@ shared_examples_for "an Urbanairship client" do
|
|
763
767
|
|
764
768
|
end
|
765
769
|
|
770
|
+
describe "::segments" do
|
771
|
+
before(:each) do
|
772
|
+
subject.application_key = "my_app_key"
|
773
|
+
subject.master_secret = "my_master_secret"
|
774
|
+
end
|
775
|
+
|
776
|
+
it "raises an error if call is made without an app key and master secret configured" do
|
777
|
+
subject.application_key = nil
|
778
|
+
subject.master_secret = nil
|
779
|
+
|
780
|
+
lambda {
|
781
|
+
subject.segments
|
782
|
+
}.should raise_error(RuntimeError, "Must configure application_key, master_secret before making this request.")
|
783
|
+
end
|
784
|
+
|
785
|
+
it "uses app key and secret to sign the request" do
|
786
|
+
subject.segments
|
787
|
+
FakeWeb.last_request['authorization'].should == "Basic #{Base64::encode64('my_app_key:my_master_secret').chomp}"
|
788
|
+
end
|
789
|
+
|
790
|
+
it "returns valid segments" do
|
791
|
+
response = subject.segments
|
792
|
+
response.first.should include("segments")
|
793
|
+
response["segments"].each do |s|
|
794
|
+
["id", "display_name", "creation_date", "modification_date"].each do |k|
|
795
|
+
s.should include(k)
|
796
|
+
end
|
797
|
+
end
|
798
|
+
end
|
799
|
+
|
800
|
+
it "success? is false when the call doesn't return 200" do
|
801
|
+
subject.application_key = "my_app_key2"
|
802
|
+
subject.master_secret = "my_master_secret2"
|
803
|
+
subject.segments.success?.should == false
|
804
|
+
end
|
805
|
+
|
806
|
+
end
|
807
|
+
|
808
|
+
|
766
809
|
describe "logging" do
|
767
810
|
|
768
811
|
before(:each) do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: urbanairship
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-02-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|