際際滷

際際滷Share a Scribd company logo
Create Your Own:

Mobile Push-Noti鍖cation Service

Monday, January 13, 14
Starting Point
 To expedite the tutorial process, Ive
already created three models:

 User
 Device
 Permitted Apps
Monday, January 13, 14
app/models/user.rb

app/models/device.rb

Monday, January 13, 14
app/models/permitted_app.rb

Permitted App Migration

Monday, January 13, 14
User and Device Migrations

Monday, January 13, 14
Step 2(ish): Routes
con鍖g/routes.rb

lib/app_constraints.rb

Monday, January 13, 14
Behold, a versioned API

So, /api/users/ will default to version 1 of our API.

Is this a good idea? Theres a LOT of discussion about versioning APIs...
http://apiux.com/2013/05/14/api-versioning/
https://mathieu.fenniak.net/aint-nobody-got-time-for-that-api-versioning/
http://railscasts.com/episodes/350-rest-api-versioning
Do what feels comfortable / correct. Im not too keen on having a default API route which may change behind-the-scenes, and
inadvertently break applications that use the API.
Monday, January 13, 14
Controllers and Authentication

Monday, January 13, 14
Controllers cont.

Additional info
http://railscasts.com/episodes/350-rest-api-versioning?view=asciicast
http://collectiveidea.com/blog/archives/2013/06/13/building-awesome-rails-apis-part-1/
http://railsware.com/blog/2013/04/08/api-with-ruby-on-rails-useful-tricks
https://github.com/rails-api/active_model_serializers

Monday, January 13, 14
Authentication

Additional info
http://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Token.html
http://railscasts.com/episodes/352-securing-an-api?view=asciicast

Monday, January 13, 14
Authentication in Action

Monday, January 13, 14
Cool, we have a Users Resource which is accessible via the
routes weve created on /api/users... what does that have to
do with sending push-noti鍖cations to phones?

Monday, January 13, 14
How do Push Noti鍖cations work? (iOS)

Phase 1

Good documentation of the process can be found on Adobes site for Adobe AIR (seriously)
http://www.adobe.com/devnet/air/articles/ios-push-noti鍖cations.html
Monday, January 13, 14

Phase 2
Next, install a background processing
system of your choice

https://www.ruby-toolbox.com/categories/Background_Jobs

Monday, January 13, 14
iOS worker for Sidekiq

Monday, January 13, 14
Android worker for Sidekiq

Monday, January 13, 14
Final example




A 鍖nal example with some additional features is available [1]



Primary Gems used:

Much credit is due to Ryan Bates for the API skeleton [2] and authentication
implementation [3], and wellwithme.com for their original Android/iOS push
noti鍖cations tutorial. [4]







Sidekiq
Sidetiq
Grocer



Friendly ID

GCM
Active Model Serializers

[1] https://bitbucket.org/momer/example-mobile-pns/src
[2] http://railscasts.com/episodes/350-rest-api-versioning
[3] http://railscasts.com/episodes/352-securing-an-api
[4] http://blog.wellwith.me/how-to-send-ios-and-android-noti鍖cations-from-your-rails-backend
Monday, January 13, 14

More Related Content

Example Mobile Push Notification Service in Rails