$30 off During Our Annual Pro Sale. View Details »

Mobile Backend as a Service

Mobile Backend as a Service

Mobile Backend as a Service

jmortegac

April 26, 2015
Tweet

More Decks by jmortegac

Other Decks in Programming

Transcript

  1. José Manuel Ortega Candel Mobile Backend as a Service(MBaaS) Except

    where otherwise noted, this work is licensed under: http://creativecommons.org/licenses/by-nc-sa/3.0/ Leganés 12-13 Febrero 2015
  2. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 2

    https://speakerdeck.com/jmortega
  3. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 3

    Persistence in Mobile iNDEX Cloud Computing / BaaS MBaaS features /architecture/ Startups Push Notifications / GCM / API REST / Storage Kinvey / Backendless / BackBeam / Parse Demos on Android
  4. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 4

    SQLite / Core Data Persistence in Mobile
  5. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 5

    Persistence in Mobile Android iOS SQLite android.database.sqlite  Tables and relations Core Data  Objects  DataModel Content Providers /data/data/<Application-Package> /databases/<database-name> Only acces with root DataModel editor in Xcode for register objects and their relationships
  6. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 6

    Persistence in Mobile Objects vs Tables Object Relational Mapping
  7. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 7

    Persistence in Mobile public class Event extends Entity { public int id; public String name; } Event e = Entity.query(Event.class).where("id=1") .execute(); p.name = “Techfest"; p.save();
  8. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 8

    Cloud Computing PaaS(Platform as a Service) IaaS(Infraestructure as a Service)
  9. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 9

    Cloud Computing BaaS(Backend as a Service) /MBaaS SaaS(Software as a Service)
  10. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 10

    BaaS
  11. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 11

    BaaS MBaaS= Cloud-Mobile Services + Mobile SDKs + Management Console
  12. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 12

    MBaaS APIs
  13. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 13

    MBaaS APIs
  14. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 14

    MBaaS architecture
  15. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 15

    MBaaS features  API REST for CRUD operations(GET,POST,UPDATE,DELETE,PATCH)  Multi platform SDK  Cloud Storage  Push notifications  User management  Data Browser  Query language  Import/Export data  Analytics / Monetization
  16. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 16

    MBaaS features Reduce server side coding developers can focus on front-end development often providers offer SDKs that wrap REST API calls and handle in/out parameters: both HTML/JS and native (iOS, Android,Windows Phone) No server setup, ready to use (HOSTED SERVICE) Deployed on the cloud, with built-in scalability
  17. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 17

    Startups
  18. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 18

    Others  Appcelerator(Titanium)  http://appery.io  http://www.applicasa.com  http://www.apiomat.com  http://www.kumulos.com  Open Source  http://www.baasbox.com
  19. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 19

    Startups
  20. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 20

    MBaaS OBJECT-BASED DATA STORAGE DATA SYNCHRONIZED USER ACCOUNTS & AUTHENTICATION REAL-TIME ANALYTICS PUSH NOTIFICATIONS API REST
  21. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 21

    Storage support
  22. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 22

    { "results": [ { "createdAt": "2015-01-05T14:54:00.650Z", "eventImage": { "__type": "File", "name": "tfss-b84799aa-4366-488d-afe7-1afdb5646dee-t3chfest_slider.jpg", "url": "http://files.parsetfss.com/5ffebb1f-a86a-4d00-8dcb-6b9e349f4838/tfss-b84799aa-4366- 488d-afe7-1afdb5646dee-t3chfest_slider.jpg" }, "eventName": "techFest", "eventURL": "https://techfest.uc3m.es/", "objectId": "HxmPtSWnqa", "updatedAt": "2015-02-12T14:56:00.866Z" }] } JSON Object
  23. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 23

    Push Notifications Var channel= _application.pubSub.Subscribe(“channel name”); channel.Send({message}); Push Notification Service MBaaS
  24. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 24

    Push Notifications  Multiplatforms messages  Enable server applications to send information to mobile apps even when the app isn’t in use  The device displays the information using a “badge,” alert, or pop up message. A push notification uses the service provided by the device’s operating system:  iOS - Apple Push Notification service (APNS)  Android - Google Cloud Messaging (GCM)
  25. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 25

    Google Cloud Messaging(GCM)
  26. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 26

    Google Cloud Messaging(GCM) https://console.developers.google.com
  27. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 27

    Push Notifications iOS Apple Push Notification service (APNs) Certificate Private Key Android Google Cloud Messaging API KEY Sender ID Google API Console > Authentication && Project Number
  28. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 28

  29. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 29

    Kinvey Data collection Kinvey stores data as collections and entities. Entities are JSON documents. Collections belong to applications. Internally, data is stored in a MongoDB cluster.
  30. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 30

    Kinvey Data management NO SQL DataBases REST API CLOUD CODE
  31. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 31

    Kinvey Data Link
  32. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 32

    Kinvey API REST
  33. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 33

    Kinvey API REST OPERATIONS
  34. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 34

    Kinvey API REST OPERATIONS
  35. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 35

    Kinvey CLOUD CODE  JavaScript / Custom endpoints
  36. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 36

    Kinvey Users management
  37. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 37

    Kinvey Import/Export data
  38. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 38

    Kinvey Push notifications
  39. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 39

    Kinvey
  40. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 40

  41. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 41

    BackBeam
  42. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 42

    BackBeam
  43. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 43

    BackBeam
  44. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 44

  45. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 45

    Backendless Data Browser
  46. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 46

    Backendless data type & relations
  47. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 47

    Backendless Export data
  48. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 48

    Backendless generate code
  49. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 49

    Backendless Project
  50. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 50

    Backendless Project
  51. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 51

    Backendless security
  52. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 52

    Backendless security
  53. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 53

    Backendless User managment BackendlessUser user = new BackendlessUser(); user.setEmail( “user@backendless.com" ); user.setPassword( "my_super_password" ); Backendless.UserService.register( user, new BackendlessCallback<BackendlessUser>() { @Override public void handleResponse( BackendlessUser backendlessUser ) { Log.i( "Registration", backendlessUser.getEmail() + " successfully registered" ); } } );
  54. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 54

  55. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 55

    Security Authentication && Authorization Basic Authentication userName and password encoded in Base 64 authorization header: Authorization: Basic bXlVc2VybmFtZTpteVBhc3N3b3Jk Session Authentication Auth token / Social Networks Permissions Shared / Private / Read Only / Full
  56. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 56

  57. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 57

    Parse ARCHITECTURE
  58. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 58

    Parse SERVICES User Authentication Push Notification Data Storage Rest API JavaScript SDK iOS SDK Android SDK JavaScript SDK
  59. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 59

    Parse CROSS-PLATFORM SUPPORT
  60. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 60

    Connect your app with services APPLICATION ID CLIENT KEY + Parse.initialize(“APP_ID”,”C_KEY”);
  61. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 61

    Parse Application Keys + Installations
  62. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 62

    Parse Objects Parse stores data internally as flat JSON Documents, called ParseObject, with have the restriction that keys must be alphanumeric strings. Parse automatically creates ‘classes’ for ParseObjects, grouping objects with similar properties. Classes and all objects associated to them belong to applications, which can be defined on the Parse web interface. ParseObject event = new ParseObject(“Event"); event.put(“eventName", “techfest”); event.put(“eventURL", “http://techfest.uc3m.es"); event.put(“eventDate", new Date());
  63. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 63

    Parse Data browser + filter
  64. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 64

    Parse Data browser
  65. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 65

    Parse Cloud Code  Write our owns API functions with javascript
  66. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 66

    Parse with ANDROID <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> // Enable Local Datastore. Parse.enableLocalDatastore(this); Parse.initialize(this, “APPLICATION_ID", “CLIENT_KEY"); ParseObject event = new ParseObject(“Event"); event.put(“eventName", “techfest”); event.put(“eventURL", “http://techfest.uc3m.es"); event.put(“eventDate", new Date()); event.saveEventually(); //Object saved when user has network connection event.saveInBackground();
  67. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 67

    Parse Object import com.parse.ParseClassName; import com.parse.ParseObject; @ParseClassName(“Event") public class Event extends ParseObject{ public Event(){} public String getName(){ return getString(“eventName"); } public void setName(String name){ put(“eventName", name); } }} ParseObject.registerSubclass(Event.class);
  68. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 68

    Parse Object with files byte[] data = myPhotoObject.toByteArray(); ParseFile eventPhoto = new ParseFile("t3chfest.jpg", data); eventPhoto.saveInBackground(); ParseObject event = new ParseObject("Event"); event.put("name", "t3chFest"); event.put(”photo”, eventPhoto); event.saveInBackground();
  69. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 69

    Parse Object with files
  70. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 70

    Parse Data Entity type
  71. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 71

    Query Language ParseQuery<ParseObject> query = ParseQuery.getQuery(“Event"); query.whereEqualTo(“eventName", “techfest"); query.findInBackground(new FindCallback<ParseObject>() { public void done(List<ParseObject> eventList, ParseException e) { if (e == null) { Log.d(“events", "Retrieved " + eventList.size() + " events"); } else { Log.d(“events", "Error: " + e.getMessage()); } } }); query.setCachePolicy(CachePolicy.CACHE_THEN_NETWORK);
  72. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 72

    CACHE  query.cachePolicy property  CachePolicy.CACHE_ELSE_NETWORK The query first tries to load from the cache, but if that fails, it loads results from the network.If neither cache nor network succeed, there is a PFError.  CachePolicy.CACHE_THEN_NETWORK The query first loads from the cache, then loads from the network. In this case, the callback will actually be called twice - first with the cached results, then with the network results. Since it returns two results at different times, this cache policy cannot be used synchronously with findObjects.
  73. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 73

    JavaScript var event= Parse.Object.extend ("Event"); var query = new Parse.Query (event); query.find ({ success: function (results) { $scope.data.events = results; }, error: function (error) { alert ("Error:" + error.code + "" + error.message); } });
  74. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 74

    Parse Push Notifications Enabling Push Notifications
  75. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 75

    Parse SDK
  76. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 76

    Parse Push Notifications
  77. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 77

    Parse Push Notifications //Enable to receive push PushService.setDefaultPushCallback(this, RespondToPushActivity.class); ParseInstallation pi = ParseInstallation.getCurrentInstallation(); //Register a channel to test push channels Context ctx = this.getApplicationContext(); PushService.subscribe(ctx, "ch1", RespondToPushActivity.class); pi.saveEventually();
  78. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 78

    API REST
  79. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 79

    API REST AJAX CALL var headers = {"X-Parse-Application-Id":"YOUR-APP-ID-HERE", "X-Parse-REST-API-Key":"YOUR- REST-API-KEY-HERE"}; function getData() { $.ajax({ "type":"GET", "url":"https://api.parse.com/1/classes/Event", "dataType":"json", "contentType":"application/json", "headers":headers, success:function(data, status, xhr) { var result = ""; for(var i = 0; i < data.results.length; i++) { result = result +""+ data.results[i].eventName+" / "+ data.results[i].eventURL+""; }} }); }
  80. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 80

    PERMISSIONS / ACL
  81. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 81

    PARSE ANALYTICS
  82. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 82

    PARSE IMPORT DATA JSON/CSV
  83. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 83

    PARSE USER MANAGMENT //login ParseUser.logInInBackground(username, password, new LogInCallback() { public void done(ParseUser user, com.parse.ParseException e) { }}); //signUp ParseUser user = new ParseUser(); user.setUsername(username); user.setPassword(password); user.setEmail(email); //optional user.signUpInBackground(new SignUpCallback() { public void done(com.parse.ParseException e) { }}); //Check if user is logged ParseUser currentUser = ParseUser.getCurrentUser();
  84. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 84

    PARSE USER MANAGMENT
  85. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 85

    https://github.com/jmortega/parseProjects
  86. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 86

    Parse T3chfest
  87. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 87

    Parse T3chfest
  88. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 88

    Parse Login
  89. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 89

    PARSE EXAMPLES https://parse.com/tutorials
  90. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 90

    REFERENCES http://www.androidbook.com/expertandroid/projects
  91. Mobile Backend as a Service(MBaaS) Leganés 12-13 Febrero 2015 91