PHYSICAL SERVERS
LOAD BALANCING
DATABASE BINDINGS
RESTful API
ROUTING
MIDDLEWARE
APP SECURITY
APP BUSINESS LOGIC
NETWORKIN...
PHYSICAL SERVERS
LOAD BALANCING
DATABASE BINDINGS
RESTful API
ROUTING
MIDDLEWARE
APP SECURITY
APP BUSINESS LOGIC
NETWORKIN...
PARSE
YOUR APP
Parse Core Parse Push Parse Analytics
Parse Core
Your data in the cloud
Title
Time
Track
Key Value
title “Getting Started with Parse
track “Track 1”
time September 5, 2013...
talk.saveInBackground();
talk.put(“title”, “Getting Started with Parse”);!
talk.put(“track”, “Track 1”);!
talk.put(“time”,...
ParseQuery<ParseObject> query = ParseQuery.getQuery(”Talk”);
query.findInBackground(new FindCallback<ParseObject>(){!
publ...
byte[] data = myPhotoObject.toByteArray();
ParseFile image = new ParseFile(”Parse-2.jpg”, data);!
image.saveInBackground()...
Easy User Management
Parse Social
•ParseUsers make it simple to:

• Sign up

• Log in

• Manage user session with “current...
ParseUser.logInInBackground( “janedoe”, !
“mypassword123”, new LogInCallback() {!
public void done(ParseUser user, ParseEx...
ParseTwitterUtils.link(user, this, new SaveCallback() {!
@Override!
public void done(ParseException e) {!
if (ParseTwitter...
•Background Jobs

•For long running jobs

•Can be scheduled

Run custom app code in the Parse Cloud
Cloud Code
•Running Co...
A Simple Background Job
Parse.Cloud.job(“userMigration”, function (request, status) {!
// Set up to modify user data	

   ...
Integrate with virtually any third-party service
•Parse Image Module

• Resize, crop, scale

• Change image format
•User S...
Parse Local Datastore
Parse Push
ParseInstallation.getCurrentInstallation().saveInBackground();
• Pushes are sent to Installations

•1 device + 1 install o...
ParsePush push = new ParsePush();!
push.setChannel(“Giants”);!
push.setMessage(“The game starts in 5!”);!
push.sendInBackg...
Find users who match particular criteria
Push to a Query
ParseQuery pushQuery = ParseInstallation.getQuery();!
pushQuery.w...
Parse Analytics
Parse Analytics
Measure App Usage

• API calls

• App open rates

• Push campaigns

• Custom events
Track Any Data Point I...
The Basics: Requests
event: "signedUp"!
dimensions: {!
gender: "f",!
source: "web",!
friendsUsingApp: "35",!
wasReferred: "true"!
}
• Note: 

•...
Understanding Growth
Understanding Retention
Understanding Retention
Understanding Retention
!
Over 260,000 Apps Buil
0
50,000
100,000
150,000
300,000
2011 2012 2013 2014
200,000
250,000
2015
AppsbuiltonParse
140,000new developers this year
New Parse Customers
Parse Core Parse Push Parse Analytics
UNLIMITED
up to 30 requests/sec
UNLIMITED
up to 1,000,000 recipients
UNLIMITED
data ...
Thanks - Questions?
Cheaper, Faster, Easier, Better: Building mobile apps with Parse
Cheaper, Faster, Easier, Better: Building mobile apps with Parse
Cheaper, Faster, Easier, Better: Building mobile apps with Parse
Cheaper, Faster, Easier, Better: Building mobile apps with Parse
Cheaper, Faster, Easier, Better: Building mobile apps with Parse
Cheaper, Faster, Easier, Better: Building mobile apps with Parse
Cheaper, Faster, Easier, Better: Building mobile apps with Parse
Cheaper, Faster, Easier, Better: Building mobile apps with Parse
Cheaper, Faster, Easier, Better: Building mobile apps with Parse
Upcoming SlideShare
Loading in …5
×

Cheaper, Faster, Easier, Better: Building mobile apps with Parse

558 views
457 views

Published on

As presented at the Israel Mobile Summit 2014 by:
Ali Parr, Facebook
http://www.israelmobilesummit.com

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
558
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Cheaper, Faster, Easier, Better: Building mobile apps with Parse

  1. 1. PHYSICAL SERVERS LOAD BALANCING DATABASE BINDINGS RESTful API ROUTING MIDDLEWARE APP SECURITY APP BUSINESS LOGIC NETWORKING CACHING DATA MODELS USER SESSIONS SOCIAL PUSH NOTIFICATIONS FILES UI BINDINGS
  2. 2. PHYSICAL SERVERS LOAD BALANCING DATABASE BINDINGS RESTful API ROUTING MIDDLEWARE APP SECURITY APP BUSINESS LOGIC NETWORKING CACHING DATA MODELS USER SESSIONS SOCIAL PUSH NOTIFICATIONS FILES UI BINDINGS YOUR APP
  3. 3. PARSE YOUR APP
  4. 4. Parse Core Parse Push Parse Analytics
  5. 5. Parse Core
  6. 6. Your data in the cloud Title Time Track Key Value title “Getting Started with Parse track “Track 1” time September 5, 2013 12:45 PM +0700 Talk Parse Data
  7. 7. talk.saveInBackground(); talk.put(“title”, “Getting Started with Parse”);! talk.put(“track”, “Track 1”);! talk.put(“time”, talkDate); // Date ParseObject talk = new ParseObject(”Talk”); Key Value title “Getting Started with Parse track “Track 1” time September 5, 2013 12:45 PM +0700 Talk Creating and Saving an Object
  8. 8. ParseQuery<ParseObject> query = ParseQuery.getQuery(”Talk”); query.findInBackground(new FindCallback<ParseObject>(){! public void done(List<ParseObject> talkList, ParseException e) {! if (e == null) {! // We have a list of all the Basic track talks! } else {! // Something went wrong; check the ParseException! }! } } // Find only the talks that are in the Basic track! query.whereEqualTo(”track”,”basic”); Getting a List of Objects
  9. 9. byte[] data = myPhotoObject.toByteArray(); ParseFile image = new ParseFile(”Parse-2.jpg”, data);! image.saveInBackground(); ParseObject picture = new ParseObject(”Picture”);! picture.put(“title”, “Red Hot Chili Peppers concert”);! picture.put(“image”, image);! picture.saveInBackground(); Saving Files
  10. 10. Easy User Management Parse Social •ParseUsers make it simple to: • Sign up • Log in • Manage user session with “currentUser” • Create Roles in your app • Improve app security with ACLs • Integrate with Facebook and Twitter
  11. 11. ParseUser.logInInBackground( “janedoe”, ! “mypassword123”, new LogInCallback() {! public void done(ParseUser user, ParseException e) {! if (user != null) {! // The user is logged in! } else {! // Something went wrong; check the ParseException! }! }! }); Sign up Log in ParseUser ParseUser user = new ParseUser();! user.setUsername(“janedoe”);! user.setPassword(“mypassword123”);! user.setEmail(“janedoe@fb.com”);! user.signUpInBackground();
  12. 12. ParseTwitterUtils.link(user, this, new SaveCallback() {! @Override! public void done(ParseException e) {! if (ParseTwitterUtils.isLinked(user)) {! // The user added their Twitter account! }! }! }; Twitter :( Link to Social Networks ParseFacebookUtils.link(user, this, new SaveCallback() {! @Override! public void done(ParseException e) {! if (ParseFacebookUtils.isLinked(user)) {! // The user added their Facebook account! }! }! }; Facebook
  13. 13. •Background Jobs •For long running jobs •Can be scheduled Run custom app code in the Parse Cloud Cloud Code •Running Code when Objects are Saved or Deleted •Cloud functions & custom webhooks
  14. 14. A Simple Background Job Parse.Cloud.job(“userMigration”, function (request, status) {! // Set up to modify user data    Parse.Cloud.useMasterKey();! // Query for all users! var query = new Parse.Query(Parse.User);! query.each(function(user) {! // Set and save the change! user.set(“plan”, request.params.plan);! return user.save();    }).then(function() {! // Set the job’s success status! status.success(“Migration completed successfully.”);    }, function(error) {      // Set the job’s error status      status.error(“Uh oh, something went wrong.”);    }); });
  15. 15. Integrate with virtually any third-party service •Parse Image Module • Resize, crop, scale • Change image format •User Session Module • For server-side apps • Manage user session across pages Cloud Modules •Send text messages, emails, or accept payments •Connect to services with Parse.Cloud.httpRequest
  16. 16. Parse Local Datastore
  17. 17. Parse Push
  18. 18. ParseInstallation.getCurrentInstallation().saveInBackground(); • Pushes are sent to Installations •1 device + 1 install of your app = 1 Installation • Add relationships to objects of interest, e.g. current User Push Notifications Installations
  19. 19. ParsePush push = new ParsePush();! push.setChannel(“Giants”);! push.setMessage(“The game starts in 5!”);! push.sendInBackground(); Push to a Channel Subscribe users by interest or category
  20. 20. Find users who match particular criteria Push to a Query ParseQuery pushQuery = ParseInstallation.getQuery();! pushQuery.whereEqualTo(“isFacebookEmployee”, true);! ! ! ParsePush push = new ParsePush();! push.setQuery(pushQuery);! push.setMessage(“Good afternoon, Facebook!”);! push.sendInBackground();
  21. 21. Parse Analytics
  22. 22. Parse Analytics Measure App Usage • API calls • App open rates • Push campaigns • Custom events Track Any Data Point In Real Time
  23. 23. The Basics: Requests
  24. 24. event: "signedUp"! dimensions: {! gender: "f",! source: "web",! friendsUsingApp: "35",! wasReferred: "true"! } • Note: •Each event can have a maximum of 4 dimensions •Dimensions must be strings Dive Deeper: Custom Analytics •Save a free-form event with dimensions for segmenting results
  25. 25. Understanding Growth
  26. 26. Understanding Retention
  27. 27. Understanding Retention
  28. 28. Understanding Retention
  29. 29. ! Over 260,000 Apps Buil 0 50,000 100,000 150,000 300,000 2011 2012 2013 2014 200,000 250,000 2015 AppsbuiltonParse
  30. 30. 140,000new developers this year
  31. 31. New Parse Customers
  32. 32. Parse Core Parse Push Parse Analytics UNLIMITED up to 30 requests/sec UNLIMITED up to 1,000,000 recipients UNLIMITED data points
  33. 33. Thanks - Questions?

×