README.md
# Ruby Push Notifications
[](https://travis-ci.org/calonso/ruby-push-notifications) [](https://gemnasium.com/calonso/ruby-push-notifications) [](https://codeclimate.com/github/calonso/ruby-push-notifications) [](https://codeclimate.com/github/calonso/ruby-push-notifications) [](http://badge.fury.io/rb/ruby-push-notifications) [](https://gitter.im/calonso/ruby-push-notifications?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
### iOS, Android and Windows Phone Push Notifications made easy!
## Features
* iOS and Android support
* Complete error and retry management
* Easy and intuitive API
## Installation
Add this line to your application's Gemfile:
gem 'ruby-push-notifications'
And then execute:
$ bundle
Or install it yourself as:
$ gem install ruby-push-notifications
## Usage
**Ruby Push Notifications** gem usage is really easy.
1. After installing, require the gem
2. Create one or more notifications
3. Create the corresponding `pusher`
4. Push!!
5. Get feedback
For completely detailed examples:
1. [Apple iOS example](https://github.com/calonso/ruby-push-notifications/tree/master/examples/apns.rb)
2. [Google Android example (GCM)](https://github.com/calonso/ruby-push-notifications/tree/master/examples/gcm.rb)
3. [Google Android example (FCM)](https://github.com/calonso/ruby-push-notifications/tree/master/examples/fcm.rb)
4. [Windows Phone(MPNS) example](https://github.com/calonso/ruby-push-notifications/tree/master/examples/mpns.rb)
5. [Windows Phone(WNS) example](https://github.com/calonso/ruby-push-notifications/tree/master/examples/wns.rb)
## Pending tasks
Feel free to contribute!!
* Validate iOS notifications format and max size
* Validate iOS tokens format
* Validate GCM registration ids format
* Validate GCM notifications format and max size
* Split GCM notifications in parts if more than 1000 destinations are given (currently raising exception)
* Integrate with APNS Feedback service
* Validate MPNS notifications format
* Validate MPNS data
* Add other platforms (Amazon Fire...)
## Contributing
1. Fork it ( https://github.com/calonso/ruby-push-notifications/fork )
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
## Troubleshooting
**If you see "255 Unknown Error" error code**
This error code is assigned when the connection to push notification server wasn't successful
<a href="https://github.com/calonso/ruby-push-notifications/blob/master/lib/ruby-push-notifications/apns/apns_pusher.rb#L56-L58">255 UNKnown Error code</a>
Checking your connection configuration for example with APNS connection.
When your pem file and token are development make sure you configure the pusher for sandbox mode
``` RubyPushNotifications::APNS::APNSPusher.new('the certificate', true)) ```
or when your pem file and token are production you should configure the pusher for production mode (Set the sandbox mode to false when creating your pusher)
``` RubyPushNotifications::APNS::APNSPusher.new('the certificate', false)) ```
## Changelog
Refer to the [CHANGELOG.md](https://github.com/calonso/ruby-push-notifications/blob/master/CHANGELOG.md) file for detailed changes across versions.