Urbanairship is a Ruby library for interacting with the Urban Airship API.
Installation
gem install urbanairship
Note: if you are using Ruby 1.8, you should also install the system_timer
gem for more reliable timeout behaviour. See http://ph7spot.com/musings/system-timer for more information.
Configuration
Urbanairship.application_key = 'application-key'
Urbanairship.application_secret = 'application-secret'
Urbanairship.master_secret = 'master-secret'
Urbanairship.logger = Rails.logger
Urbanairship.request_timeout = 5
Usage
Registering a device token
Urbanairship.register_device('DEVICE-TOKEN')
Unregistering a device token
Urbanairship.unregister_device('DEVICE-TOKEN')
Sending a push notification
notification = {
:schedule_for => [1.hour.from_now],
:device_tokens => ['DEVICE-TOKEN-ONE', 'DEVICE-TOKEN-TWO'],
:aps => {:alert => 'You have a new message!', :badge => 1}
}
Urbanairship.push(notification)
Batching push notification sends
notifications = [
{
:schedule_for => [{ :alias => 'deadbeef', :scheduled_time => 1.hour.from_now }],
:device_tokens => ['DEVICE-TOKEN-ONE', 'DEVICE-TOKEN-TWO'],
:aps => {:alert => 'You have a new message!', :badge => 1}
},
{
:schedule_for => [3.hours.from_now],
:device_tokens => ['DEVICE-TOKEN-THREE'],
:aps => {:alert => 'You have a new message!', :badge => 1}
}
]
Urbanairship.batch_push(notifications)
Sending broadcast notifications
Urban Airship allows you to send a broadcast notification to all active registered device tokens for your app.
notification = {
:schedule_for => [1.hour.from_now],
:aps => {:alert => 'Important announcement!', :badge => 1}
}
Urbanairship.broadcast_push(notification)
Polling the feedback API
The first time you attempt to send a push notification to a device that has uninstalled your app (or has opted-out of notifications), both Apple and Urban Airship will register that token in their feedback API. Urban Airship will prevent further attempted notification sends to that device, but it's a good practice to periodically poll Urban Airship's feedback API and mark those tokens as inactive in your own system as well.
Urbanairship.feedback(24.hours.ago)
Deleting scheduled notifications
If you know the alias or id of a scheduled push notification then you can delete it from Urban Airship's queue and it will not be delivered.
Urbanairship.delete_scheduled_push("123456789")
Urbanairship.delete_scheduled_push(123456789)
Urbanairship.delete_scheduled_push(:alias => "deadbeef")
Note: all public library methods will return either an array or a hash, depending on the response from the Urban Airship API. In addition, you can inspect these objects to find out if they were successful or not, and what the http response code from Urban Airship was.
response = Urbanairship.push(payload)
response.success?
response.code
response.inspect
If the call to Urban Airship times out, you'll get a response object with a '503' code.
response = Urbanairship.feedback(1.year.ago)
response.success?
response.code
response.inspect