.. image:: https://github.com/urbanairship/ruby-library/actions/workflows/ci.yaml/badge.svg
:target: https://github.com/urbanairship/ruby-library/
About
=====
``urbanairship`` is a Ruby library for using the `Airship
`_ REST API for push notifications, message
center messages, email, and SMS.
Requirements
============
We officially support the following Ruby versions::
2.6.7
2.7.2
Newer 2.x versions should work as well.
Functionality
=============
Version 8.0 is a major upgrade, as we have changed the tested/supported versions of Ruby. A more detailed list of changes can be found in the CHANGELOG.
Questions
=========
The best place to ask questions or report a problem is our support site:
http://support.airship.com/
Installation
============
If you have the ``bundler`` gem (if not you can get it with
``$ gem install bundler``) add this line to your application's
Gemfile:
.. code-block::
>>> $ gem 'urbanairship'
And then execute:
.. code-block::
>>> $ bundle
OR install it yourself as:
.. code-block::
>>> $ gem install urbanairship
Configuration
=============
In your app initialization, you can do something like the following:
.. code-block:: ruby
require 'urbanairship'
Urbanairship.configure do |config|
config.server = 'go.airship.eu'
config.log_path = '/path/to/your/logfile'
config.log_level = Logger::WARN
config.timeout = 60
end
If you want to use a custom logger (e.g Rails.logger), you can do:
.. code-block:: ruby
require 'urbanairship'
Urbanairship.configure do |config|
config.custom_logger = Rails.logger
config.log_level = Logger::WARN
end
Available Configurations
------------------------
- **log_path**: Allows to define the folder where the log file will be created (the default is nil).
- **log_level**: Allows to define the log level and only messages at that level or higher will be printed (the default is INFO).
- **server**: Allow to define the Airship server you want to use ("go.airship.eu" or "go.urbanairship.com")
- **timeout**: Allows to define the request timeout in seconds (the default is 5).
Usage
=====
Once the gem has been installed you can start sending pushes!
See the `full documentation
`_,
`api examples
`_, as well as the
`Airship API Documentation
`_ for more
information.
Broadcast to All Devices
------------------------
.. code-block:: ruby
require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key:'application_key', secret:'master_secret')
p = airship.create_push
p.audience = UA.all
p.notification = UA.notification(alert: 'Hello')
p.device_types = UA.device_types(['ios','android'])
p.send_push
Simple Tag Push
---------------
.. code-block:: ruby
require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key:'application_key', secret:'master_secret')
p = airship.create_push
p.audience = UA.tag('some_tag')
p.notification = UA.notification(alert: 'Hello')
p.device_types = UA.device_types(['ios','android'])
p.send_push
Specify the Airship server used to make your requests
-----------------------------------------------------
By default, the request will be sent to the 'go.urbanairship.com' server:
.. code-block:: ruby
require 'urbanairship'
Urbanairship::Client.new(key:'application_key', secret:'master_secret')
You can change the server globally in the Urbanairship configuration:
.. code-block:: ruby
require 'urbanairship'
Urbanairship.configure do |config|
config.server = 'go.airship.eu'
end
Urbanairship::Client.new(key:'application_key', secret:'master_secret')
# request will be sent to the 'go.airship.eu' server
Finally, you can change the targeted server on a request basis:
.. code-block:: ruby
require 'urbanairship'
Urbanairship.configure do |config|
config.server = 'go.airship.eu'
end
Urbanairship::Client.new(key:'application_key', secret:'master_secret', server: 'go.urbanairship.com')
# The Urbanairship configuration is overridden by the client and the
# request will be sent to the 'go.urbanairship.com' server
Using Bearer Token Auth
-----------------------
.. code-block:: ruby
require 'urbanairship'
UA = Urbanairship
airship = UA::Client.new(key:'application_key', token:'token')
# Then continue as you would otherwise
**Note**: If you include a token in your instantiation, the request
will use bearer token auth. Bearer token auth is required for some
endpoints, but not supported by others. Please check `the Airship
docs site `_ to see where it is supported.
Contributing
============
1. Fork it ( https://github.com/urbanairship/ruby-library )
2. Create your feature branch: ``git checkout -b my-new-feature``
3. Commit your changes ``git commit -am 'Add some feature'``
4. Push to the branch ``git push origin my-new-feature``
5. Create a new Pull Request
6. Sign Airship's `contribution agreement
`_.
7. Reach out to our support team at https://support.airship.com to let
us know about your PR and your urgency level.
**Note**: Changes will not be approved and merged without a signed
contribution agreement.
Development
===========
After checking out the repo, ensure you have ``bundler`` installed
(``$ gem install bundler``) run::
>>> $ bin/setup
to install dependencies. Then, run::
>>> $ bin/console
for an interactive prompt that will allow you to experiment.
OR you can build a local gem to play with::
>>> $ gem build urbanairship.gemspec
>>> $ gem install ./urbanairship-.gem
Having a local build will give you better logging if you are running
into issues, but be careful to make sure to use our released public
gem in Production.