0% found this document useful (0 votes)
88 views38 pages

Simplifying Mobile Apps with Parse

This document discusses how Parse makes building mobile apps easier by providing tools and services across their pillars of data, social integration, push notifications, analytics, hosting, and cloud code. It provides examples of how Parse can be used to store and query data, manage users and social authentication, send push notifications, track analytics events, host mobile backends, and run cloud functions and jobs.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
88 views38 pages

Simplifying Mobile Apps with Parse

This document discusses how Parse makes building mobile apps easier by providing tools and services across their pillars of data, social integration, push notifications, analytics, hosting, and cloud code. It provides examples of how Parse can be used to store and query data, manage users and social authentication, send push notifications, track analytics events, host mobile backends, and run cloud functions and jobs.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 38

Adam Gross

Production Engineer, Facebook Platform


Making Mobile Apps Easier
Building with Parse
Making mobile apps is hard
Database
RE! AP"
Z
Z
Z
er#er
+
+
$ users
$ securit%
&aching
'etworking
+
+
!he fun part(
no
no
no
no
no
%es(
"t)s easier with Parse
Parse Pillars
Data ocial Push
Anal%tics *osting &loud &ode
&ore
Parse Pillars
Data Push
Anal%tics *osting &loud &ode
ocial
+our data in the cloud
Parse Data
!itle
!ime
!rack
Key Value
title ,Getting tarted with Parse
track ,!rack -.
time eptember /, 01-2 -034/ PM $1511
Talk
talk.saveInBackground();
Creating and Saving an Object
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 tarted with Parse
track ,!rack -.
time eptember /, 01-2 -034/ PM $1511
Talk
ParseQuery<ParseObject> query = ParseQuery.getQuery(Talk);
Getting a List of Objects
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);
byte[] data = myPhotoObject.toByteArray();
Saving Files
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();
Parse Pillars
ocial Push
Anal%tics *osting &loud &ode
Data
Eas% 6ser Management
Parse ocial
Parse6sers make it simple to3
7 ign up
7 8og in
7 Manage user session with ,current6ser.
7 &reate Roles in %our app
7 "mpro#e app securit% with A&8s
7 "ntegrate with Facebook and !witter
Parse6ser
ParseUser user = new ParseUser();
user.setUsername(janedoe);
user.setPassword(mypassword123);
user.setEmail([email protected]);
user.signUpInBackground();
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
}
}
});
ign up
8og in
Facebook
8ink to ocial 'etworks
ParseFacebookUtils.link(user, this, new SaveCallback() {
@Override
public void done(ParseException e) {
if (ParseFacebookUtils.isLinked(user)) {
// The user added their Facebook account
}
}
};
ParseTwitterUtils.link(user, this, new SaveCallback() {
@Override
public void done(ParseException e) {
if (ParseTwitterUtils.isLinked(user)) {
// The user added their Twitter account
}
}
};
!witter
Parse Pillars
Data ocial Push
Anal%tics *osting &loud &ode
Run custom app code in the Parse &loud
&loud &ode
7 Running &ode when 9b:ects are a#ed or Deleted
7 &loud functions ; custom webhooks
7 Background <obs
7 For long running :obs
7 &an be scheduled
A imple Background <ob
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 jobs success status
status.success(Migration completed successfully.);
}, function(error) {
// Set the jobs error status
status.error(Uh oh, something went wrong.);
});
});
"ntegrate with #irtuall% an% third=part% ser#ice
&loud Modules
7 end te>t messages, emails, or accept pa%ments
7 &onnect to ser#ices with Parse?&loud?httpRe@uest
7 Parse "mage Module
7 ResiAe, crop, scale
7 &hange image format
7 6ser ession
Module
7 For ser#er=side apps
7 Manage user
session across pages
Parse Pillars
Data ocial Push
Anal%tics *osting &loud &ode
A powerful web presence without all the hassle
Parse *osting
er#er=free
7 %ourapp?parseapp?com
7 %ourapp?com
*osting
7 tatic Files
7 D%namic Bebsites
7 E>press?:s
Parse Pillars
Data ocial Push
Anal%tics *osting &loud &ode
Push 'otiCcations For E#er%one
Parse Push
9ne AP" to Rule !hem All
7 Reach %our i9, Android, Bindows users
7 &hoose %our audience
7 imple subscriber model, or???
7 Ad#anced targeting
"nstallations
Push 'otiCcations
ParseInstallation.getCurrentInstallation().saveInBackground();
7 Pushes are sent to "nstallations
7 - de#ice $ - install of %our app D - "nstallation
7 Add relationships to ob:ects of interest, e?g? current 6ser
ubscribe users b% interest or categor%
Push to a &hannel
ParsePush push = new ParsePush();
push.setChannel(Giants);
push.setMessage(The game starts in 5!);
push.sendInBackground();
Find users who match particular criteria
Push to a Euer%
ParseQuery pushQuery = ParseInstallation.getQuery();
pushQuery.whereEqualTo(isFacebookEmployee, true);
ParsePush push = new ParsePush();
push.setQuery(pushQuery);
push.setMessage(Good afternoon, Facebook!);
push.sendInBackground();
Parse Pillars
Data ocial Push
Anal%tics *osting &loud &ode
!rack An% Data Point "n Real !ime
Parse Anal%tics
Measure App 6sage
7 &ount AP" calls
7 Fiew %our app open rates
7 9ptimiAe push campaigns
7 !rack custom e#ents
!he Basics3 Re@uests
Di#e Deeper3 &ustom Anal%tics
a#e a free=form e#ent with dimensions for segmenting results
event: "signedUp"
dimensions: {
gender: "f",
source: "web",
friendsUsingApp: "35",
wasReferred: "true"
}
'ote3
7 Each e#ent can ha#e a ma>imum of 4 dimensions
7 Dimensions must be strings
Di#e Deeper3 &ustom Anal%tics
Map<String, String> dimensions = new HashMap<String, String>();
// Add key-value pairs to be saved alongside event
dimensions.put(gender,f);
dimensions.put(source,web);
// Consider using buckets to meaningfully segment events
dimensions.put(friendsUsingApp,25-50);
dimensions.put(wasReferred,true);

ParseAnalytics.trackEvent(signUp, dimensions);
&ustom E#ents3 Anal%Ae !rends
Gnowledge is power
7 &ertain features are used
7 People are opening %our app from push notiCcations
7 6sers cancel out of a How, or hit a certain button
7 &ertain features ha#e higher error rates than others
6se Parse Anal%tics to track if???
Parse Pillars
Data ocial Push
Anal%tics *osting &loud &ode
&ore
!hank %ou(
parse?comIdocs
parse?comIhelp

You might also like