Project

devices

0.0
No commit activity in last 3 years
No release in over 3 years
Manage push notification enabled devices
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 4.2.5.1
 Project Readme

Devices

A jump start for writing push notification enabled applications.

Installation

Include this in your Gemfile:

gem "devices"

And run bundle:

bundle install

How Devices helps you

It creates a set of classes, controllers and services that you can use right away or easily extend to work with notifications. To achieve this, Devices makes the following assumptions:

  • You are going to use Amazon's SNS to deliver notifications
  • You application could have any number of users per device
  • You user could be logged in any number of devices

Configuring Devices

Devices gives you a generator which allows you to generate the models you need to use push notifications:

rails generate devices:install

This will create the corresponding configuration files in config/initializers/devices.rb and the Device model.

After this, don't forget to run the migrations:

rake db:migrate

Registering a new device

The generator creates a simple endpoint for device registration:

This will create a DevicesController with two inherited methods: create and update. Both of them expect the following params

Param Type
platform String
device_uuid String
device_token String

In addition to this, update expects an id param to identify the device you're updating.

The registration process searches the devices by their UUID and user, if no device with this UUID is registered before associated to the user, a new one is created.

However, if there already is an existing user/UUID combination the device_token is updated.

This makes the create method double up as an update method as well: two POST requests to /devices with a different device_token will create just one device, updating the token in the second request.

A successfull response from either endpoint looks like this:

{
  "device": {
    "platform": "ios",
    "device_uuid": "example device uuid",
    "device_token": "example device token",
    "endpoint_arn": "sns device url"
  }
}

You can redefine how devices are registered and updated just by defining these methods in your controller:

class MyDevicesController < Devices::DevicesController 
  def create
    super
    # your device registration logic
  end

  def update
    super
    # your device update logic
  end
end

To delete a device, the usual DELETE route is enabled in DevicesController.

Accessing the current device

The method current_device will return the device with the device UUID that matches the header X-Device-Token, that you need to include in the requests in which you intend to use the current_device helper. You can customize this in the initializer settings:

Devices.device_token_header = "My-Device-Token"