1 / 29

July 1 5 th 2015

July 1 5 th 2015. FASTER PROTOTYPING USING PARSE AND AZURE MOBILE SERVICES. Goran Đonović. About me. Mobile app developer Connect with me on LinkedIn Follow @gdjonovic on twitter for some #androiddev posts Recent remote worker #developerslife Do or die kind of a guy.

bonniec
Download Presentation

July 1 5 th 2015

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. July15th 2015 FASTER PROTOTYPING USING PARSE AND AZURE MOBILE SERVICES Goran Đonović

  2. About me • Mobile app developer • Connect with me on LinkedIn • Follow @gdjonovic on twitter for some #androiddev posts • Recent remote worker #developerslife • Do or die kind of a guy

  3. … and who are you?

  4. What are going to talk about • Prototyping • Development from mobile perspektive • Backend as a service platforms (Parse and Azure) • (M)Bass most used features • Pros & Cons • The next steps • Q&A

  5. So... What is prototype? "A prototype is an incomplete version of software, built so users can experience some of the proposed features or properties"

  6. Vs. Business hypothesis Business requirements

  7. Requirements... I want it all, I want it all, and I want it now!

  8. Hypothesis asdas

  9. Tools for your toolbox

  10. It's all about the base What is your base activity? Mobile Dev? Web Frontend Dev? Web Backend Dev? Game Dev? U no Dev?

  11. Parse services overview

  12. Azure Mobile Services Overview

  13. Parse Vs. Azure

  14. It is your choice

  15. Getting started • Create account and app • Download SDK • Download seed project • Check app key and secret • Initialize

  16. User management ParseUser user = new ParseUser();user.setUsername("my name");user.setPassword("my pass");user.setEmail("email@example.com"); //Adding users to roles ParseRole role = new ParseRole(roleName, roleACL);for (ParseUser user : usersToAddToRole) { role.getUsers().add(user)} user.signUpInBackground user.loginInBackground ParseUser.getCurrentUser (and fetch()) ParseUser.logout ParseUser.requestPasswordResetInBackground ParseAnonymusUtils (for anonymous users) ParseFacebookUtils ParseTwitterUtils

  17. Data modeling Task scannedTask = new Task(); scannedTask.put("title","SomeTitle"); scannedTask.put("assigned_to", ParseUser.getCurrentUser()); scannedTask.put("fulfilled", false); scannedTask.saveInBackground • Parse is using MongoDB • Azure mobile services use Azure SQL DB (can change) • Define tables via portal • Creating columns dynamically • 128K maximum size permitted

  18. Data relations One-to-Many pointers and arrays Many-to-Many parse relations, joint tables, arrays One-to-One ParseRelation<ParseObject> relation = book.getRelation("authors");relation.add(authorOne);

  19. Accessing the data ParseQuery<ParseObject> query = ParseQuery.getQuery("Task");query.whereEqualTo("title", "SomeTitle");query.findInBackground(new FindCallback<ParseObject>() {publicvoiddone(List<ParseObject> taskList, ParseException e) {if (e == null) { Log.d("tasks", "Retrieved " + taskList.size() + " tasks"); } else { Log.d("tasks", "Error: " + e.getMessage()); } }});

  20. Cloud code Parse.Cloud.beforeSave(Parse.User, function(request, response) {var user = request.object;if (!user.get("email")) { response.error("Every user must have an email address."); } else { response.success(); }});

  21. Cloud code [PFCloud callFunctionInBackground:@"SomeFunction" withParameters:@{ @"parameterKey": @"parameterValue"} block:^(NSArray *results, NSError *error) { if (!error) { // this is where you handle the results and change the UI. }}]; Parse.Cloud.beforeSave Parse.Cloud.afterSave Parse.Cloud.beforeDelete Parse.Cloud.afterDelete Parse.Cloud.define("SomeFunction", function(request, response) { . . . }

  22. Analytics Map<String, String> dimensions = new HashMap<String, String>();// Define ranges to bucket data points into meaningful segmentsdimensions.put("priceRange", "1000-1500");// Did the user filter the query?dimensions.put("source", "craigslist");// Do searches happen more often on weekdays or weekends?dimensions.put("dayType", "weekday");// Send the dimensions to Parse along with the 'search' eventParseAnalytics.trackEvent("search", dimensions);

  23. Push notifications push.gcm.send(results[0].handle, item.text, { success: function(response) { console.log('Push notification sent: ', response) }, error: function(error) { console.log('Error sending push notification: ', error); }

  24. Portal demo If we have time?

  25. Conclusion

  26. Q&A

  27. One more thing :) mobiledevelope.rs

  28. My contact info M: djonovic.g@gmail.com T: @gdjonovic L: https://rs.linkedin.com/in/gdjonovic

More Related