Example Mobile Push Notification Service in Rails
-
Upload
mo-omer -
Category
Technology
-
view
3.907 -
download
0
Transcript of Example Mobile Push Notification Service in Rails
![Page 1: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/1.jpg)
Create Your Own:Mobile Push-Notification Service
Monday, January 13, 14
![Page 2: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/2.jpg)
Starting Point
• To expedite the tutorial process, I’ve already created three models:
• User
• Device
• Permitted Apps
Monday, January 13, 14
![Page 3: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/3.jpg)
app/models/user.rb
app/models/device.rb
Monday, January 13, 14
![Page 4: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/4.jpg)
app/models/permitted_app.rb
Permitted App Migration
Monday, January 13, 14
![Page 5: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/5.jpg)
User and Device Migrations
Monday, January 13, 14
![Page 6: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/6.jpg)
Step 2(ish): Routesconfig/routes.rb
lib/app_constraints.rb
Monday, January 13, 14
![Page 7: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/7.jpg)
Behold, a versioned API
So, /api/users/ will default to version 1 of our API.
Is this a good idea? There’s 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. I’m 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
![Page 8: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/8.jpg)
Controllers and Authentication
Monday, January 13, 14
![Page 9: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/9.jpg)
Controllers cont.
Additional infohttp://railscasts.com/episodes/350-rest-api-versioning?view=asciicasthttp://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-trickshttps://github.com/rails-api/active_model_serializers
Monday, January 13, 14
![Page 10: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/10.jpg)
Authentication
Additional infohttp://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Token.htmlhttp://railscasts.com/episodes/352-securing-an-api?view=asciicast
Monday, January 13, 14
![Page 11: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/11.jpg)
Authentication in Action
Monday, January 13, 14
![Page 12: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/12.jpg)
Cool, we have a Users Resource which is accessible via the routes we’ve created on /api/users... what does that have to
do with sending push-notifications to phones?
Monday, January 13, 14
![Page 13: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/13.jpg)
How do Push Notifications work? (iOS)
Good documentation of the process can be found on Adobe’s site for Adobe AIR (seriously)http://www.adobe.com/devnet/air/articles/ios-push-notifications.html
Phase 1 Phase 2
Monday, January 13, 14
![Page 14: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/14.jpg)
Next, install a background processing system of your choice
https://www.ruby-toolbox.com/categories/Background_Jobs
Monday, January 13, 14
![Page 15: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/15.jpg)
iOS worker for Sidekiq
Monday, January 13, 14
![Page 16: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/16.jpg)
Android worker for Sidekiq
Monday, January 13, 14
![Page 17: Example Mobile Push Notification Service in Rails](https://reader031.fdocuments.us/reader031/viewer/2022020105/554a3aa4b4c90582328b4b31/html5/thumbnails/17.jpg)
Final example• A final example with some additional features is available [1]
• 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 notifications tutorial. [4]
[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-notifications-from-your-rails-backend
• Primary Gems used:
• Sidekiq
• Sidetiq
• Grocer
• GCM
• Active Model Serializers
• Friendly ID
Monday, January 13, 14