SlideShare a Scribd company logo
Leveraging parse.com
for Speedy Development
Andrew Kozlik
@codefortravel
www.justecho.com
What is Parse?
• Mobile Backend as a Service
• Purchased by Facebook in 2013
• Rapidly build applications
• Fantastic for prototyping
Parse Products
• Core
• Push
• Analytics
Parse Products - Core
• Core
• Data Storage
• Authentication
• Scheduled Tasks
• Custom API Endpoints
Parse Products - Push
• Push
• Broadcasting push notifications
• A/B testing
• Channel Segmenting
Parse Products - Analytics
• Analytics
• App Usage
• Event Tracking
• Crash Reporting
Pricing - Core
• 30 requests per second, 1 background job
• $100 every 10 requests per second
• 20GB File Storage
• $0.03 per GB extra
• 20GB DB Storage
• $200 per GB extra
• 2TB File Transfer
• $0.10 per GB extra
Pricing - Push
• 1,000,000 unique push recipients
• $0.05 per 1000 recipients after
• $50 per million recipients
Pricing - Analytics
• Free!
• Gee, thanks.
Installation - iOS
• Download framework
• Add to project
• Add dependencies
• Initialize Parse in code
• Use the Quick Start guide!
Installation - Android
• Download SDK
• Add SDK to build.gradle
• Update Manifest
• Initialize Parse in application’s onCreate()
• Use the Quick Start guide!
Core
• Schemaless
• Object Creation
• Object Retrieval
• Relational Data
• Local Data Store
• Special Objects
Schemaless
• Properties automatically added to backend
• Never have to look at backend
• No backend code is written to save or retrieve
objects
Creating Objects
• Create a new parse object with a specific class
name. Classes are similar to tables.
• Set all appropriate keys and values.
• Save your object in background (or foreground if
you really want to)
iOS Code
PFObject *presentation = [PFObject objectWithClassName:@“Presentation”];
presentation.title = @“Leveraging Parse for Speedy Development”;
presentation.author = @“Andrew”;
[presentation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@“Woo hoo!”);
}
}];
Android Code
ParseObject presentation = new ParseObject(“Presentation”)
presentation.put(“title”, “Leveraging Parse for Speedy
Development”);
presentation.put(“author”,“Andrew”);
presentation.saveInBackground();
Retrieving Objects
• Parse uses Queries to retrieve objects
• Instantiate a new query for a class
• Set any conditions
• Retrieve on background thread
iOS Code
PFQuery *query = [PFQuery queryWithClassName:@“Presentation”];
[query whereKey:@“author” equalTo:@“Andrew”];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
for (PFObject *object in objects) {
NSLog(@“%@“, object[@“title”]);
}
}];
Android Code
ParseQuery<ParseObject> query =
ParseQuery.getQuery(“Presentation”);
query.whereEqualTo(“author”, “Andrew”);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> presentationList,
ParseException e) {
for (int i =0; i < presentationList.size(); i++) {
ParseObject object = presentationList.get(i);
System.out.println(object.get(“title”));
}
}
});
Local Data Store
• Save data locally to the device
• Excellent for saving data for later processing
• Leverages SQLite
• Objects are “pinned” to background
• Querying works just like network calls, just
indicate you’re querying local store
Relational Data
• One to Many Relationships
• Set one object’s key to the other object
• Object ID is stored in DB
• Multiple objects can be stored as an array
• Many to Many Relationships
• Use the relation object
• Does not retrieve all objects in the relationship
• Scalable
• Relationships can be queried as Parse Objects
iOS Code
PFUser *user = [PFUser currentUser];
PFRelation *relation = [user relationForKey:@“likes”];
[relation addObject:presentation];
[user saveInBackground];
Android Code
ParseUser user = ParseUser.getCurrentUser();
ParseRelation<ParseObject> relation =
user.getRelation(“likes”);
relation.add(presentation);
user.saveInBackground();
Special User Object
• Registration
• Authentication
• Anonymous Users
• ACL
Registration / Authentication
• Required username and password on creation
• Email and other profile fields are optional
• Signup and Login methods are available
• Optional e-mail verification
Anonymous Users
• Track a user without having them register
• Convert anonymous users to registered users
• Great for allowing access to your app
Access Control Lists
• Users can be granted privileges to objects
• Read, Write, and Delete privileges can be set
• ACL can be defaulted for all users
iOS Code
PFUser *user = [PFUser user];
user.username = @“akozlik”;
user.password = @“secret_password”;
user.email = @“andrew@justecho.com”;
[user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!error) {
} else {
NSLog(@“%@“, [error userInfo][@“error”];
}
}];
Android Code
ParseUser user = new ParseUser();
user.setUsername(“akozlik”);
user.setPassword(“secret_password”);
user.setEmail(“andrew@justecho.com”);
user.signUpInBackground(new SignUpCallback() {
public void done (ParseException e) {
if (e == null ) {
} else {
}
}
});
Push
• Setup
• Installations
• Channels
• Advanced Targeting
Setup
• Set up your application to receive notifications
• iOS
• Upload certificates to Parse servers
• Update application to register for push
• Android
• Update app permissions
• Register application for push service
• Parse guides are your friend
Installations
• Each installation of your app is saved to Parse
• Used to target a specific device
• Use installations in conjunction with channels
• Unique per installation, not device
• Uninstalling and reinstalling generates new
installation ID
Channels
• Users can be subscribed to channels
• Considered to be a grouping of installations
• Use for specific group based messaging or
marketing
• Pushes can be sent directly from an app
• Great for notifying users of related information
Advanced Targeting
• Query for specific users
• Save keys to an installation object
• Query that installation object subset
• Save Users to installation objects!!!
Analytics
• Track app opens
• Custom analytics, similar to Google Analytics
• Track event with a dictionary or map of
dimensions
• View open rates, installation rates, crashes, etc.
Other Goodies
• Cloud Code
• Uses Javascript API
• Complex queries and endpoints
• Background Jobs
• Scheduled tasks for processing data
• Work similar to cron tasks
• Uses Javascript API
Other Goodies
• Boilerplate UI
• Authentication
• Registration
• Table Views / List Views
• In App Purchases
• Add handlers to monitor when objects are purchased
• Purchase object through Parse classes
• Store downloadable purchases as Parse files
Get Building!
• parse.com
• @codefortravel
• www.justecho.com

More Related Content

What's hot

第一次用Parse就深入淺出
第一次用Parse就深入淺出第一次用Parse就深入淺出
第一次用Parse就深入淺出
Ymow Wu
 
Intro to fog and openstack jp
Intro to fog and openstack jpIntro to fog and openstack jp
Intro to fog and openstack jp
Satoshi Konno
 
Crafting Evolvable Api Responses
Crafting Evolvable Api ResponsesCrafting Evolvable Api Responses
Crafting Evolvable Api Responses
darrelmiller71
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017
Matthew Groves
 
04 integrate entityframework
04 integrate entityframework04 integrate entityframework
04 integrate entityframework
Erhwen Kuo
 
Iac d.damyanov 4.pptx
Iac d.damyanov 4.pptxIac d.damyanov 4.pptx
Iac d.damyanov 4.pptx
Dimitar Damyanov
 
Real-time search in Drupal. Meet Elasticsearch
Real-time search in Drupal. Meet ElasticsearchReal-time search in Drupal. Meet Elasticsearch
Real-time search in Drupal. Meet ElasticsearchAlexei Gorobets
 
02 integrate highchart
02 integrate highchart02 integrate highchart
02 integrate highchart
Erhwen Kuo
 
Drupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + DockerDrupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + Docker
Roald Umandal
 
06 integrate elasticsearch
06 integrate elasticsearch06 integrate elasticsearch
06 integrate elasticsearch
Erhwen Kuo
 
03 integrate webapisignalr
03 integrate webapisignalr03 integrate webapisignalr
03 integrate webapisignalr
Erhwen Kuo
 
Rethinking Syncing at AltConf 2019
Rethinking Syncing at AltConf 2019Rethinking Syncing at AltConf 2019
Rethinking Syncing at AltConf 2019
Joe Keeley
 
SharePoint Framework, React, and Office UI Fabric spc adriatics 2016
SharePoint Framework, React, and Office UI Fabric spc adriatics 2016SharePoint Framework, React, and Office UI Fabric spc adriatics 2016
SharePoint Framework, React, and Office UI Fabric spc adriatics 2016
Sonja Madsen
 
Elasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English versionElasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English version
David Pilato
 
Real-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @MoldcampReal-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @MoldcampAlexei Gorobets
 
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech TalkHacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Red Hat Developers
 
OpenStack Horizon: Controlling the Cloud using Django
OpenStack Horizon: Controlling the Cloud using DjangoOpenStack Horizon: Controlling the Cloud using Django
OpenStack Horizon: Controlling the Cloud using Django
David Lapsley
 
SPSTC - PowerShell - Through the SharePoint Looking Glass
SPSTC - PowerShell - Through the SharePoint Looking GlassSPSTC - PowerShell - Through the SharePoint Looking Glass
SPSTC - PowerShell - Through the SharePoint Looking Glass
Brian Caauwe
 
Apache spark with akka couchbase code by bhawani
Apache spark with akka couchbase code by bhawaniApache spark with akka couchbase code by bhawani
Apache spark with akka couchbase code by bhawani
Bhawani N Prasad
 

What's hot (20)

第一次用Parse就深入淺出
第一次用Parse就深入淺出第一次用Parse就深入淺出
第一次用Parse就深入淺出
 
Intro to fog and openstack jp
Intro to fog and openstack jpIntro to fog and openstack jp
Intro to fog and openstack jp
 
Crafting Evolvable Api Responses
Crafting Evolvable Api ResponsesCrafting Evolvable Api Responses
Crafting Evolvable Api Responses
 
Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017Full stack development with node and NoSQL - All Things Open - October 2017
Full stack development with node and NoSQL - All Things Open - October 2017
 
04 integrate entityframework
04 integrate entityframework04 integrate entityframework
04 integrate entityframework
 
Iac d.damyanov 4.pptx
Iac d.damyanov 4.pptxIac d.damyanov 4.pptx
Iac d.damyanov 4.pptx
 
Real-time search in Drupal. Meet Elasticsearch
Real-time search in Drupal. Meet ElasticsearchReal-time search in Drupal. Meet Elasticsearch
Real-time search in Drupal. Meet Elasticsearch
 
02 integrate highchart
02 integrate highchart02 integrate highchart
02 integrate highchart
 
Drupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + DockerDrupal 8 + Elasticsearch + Docker
Drupal 8 + Elasticsearch + Docker
 
06 integrate elasticsearch
06 integrate elasticsearch06 integrate elasticsearch
06 integrate elasticsearch
 
03 integrate webapisignalr
03 integrate webapisignalr03 integrate webapisignalr
03 integrate webapisignalr
 
Rethinking Syncing at AltConf 2019
Rethinking Syncing at AltConf 2019Rethinking Syncing at AltConf 2019
Rethinking Syncing at AltConf 2019
 
SharePoint Framework, React, and Office UI Fabric spc adriatics 2016
SharePoint Framework, React, and Office UI Fabric spc adriatics 2016SharePoint Framework, React, and Office UI Fabric spc adriatics 2016
SharePoint Framework, React, and Office UI Fabric spc adriatics 2016
 
Elasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English versionElasticsearch - Devoxx France 2012 - English version
Elasticsearch - Devoxx France 2012 - English version
 
Real-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @MoldcampReal-time search in Drupal with Elasticsearch @Moldcamp
Real-time search in Drupal with Elasticsearch @Moldcamp
 
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech TalkHacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
Hacking the Mesh: Extending Istio with WebAssembly Modules | DevNation Tech Talk
 
OpenStack Horizon: Controlling the Cloud using Django
OpenStack Horizon: Controlling the Cloud using DjangoOpenStack Horizon: Controlling the Cloud using Django
OpenStack Horizon: Controlling the Cloud using Django
 
SPSTC - PowerShell - Through the SharePoint Looking Glass
SPSTC - PowerShell - Through the SharePoint Looking GlassSPSTC - PowerShell - Through the SharePoint Looking Glass
SPSTC - PowerShell - Through the SharePoint Looking Glass
 
BIG DATA ANALYSIS
BIG DATA ANALYSISBIG DATA ANALYSIS
BIG DATA ANALYSIS
 
Apache spark with akka couchbase code by bhawani
Apache spark with akka couchbase code by bhawaniApache spark with akka couchbase code by bhawani
Apache spark with akka couchbase code by bhawani
 

Similar to Leveraging parse.com for Speedy Development

Full Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQLFull Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQL
All Things Open
 
Parse London Meetup - Cloud Code Tips & Tricks
Parse London Meetup - Cloud Code Tips & TricksParse London Meetup - Cloud Code Tips & Tricks
Parse London Meetup - Cloud Code Tips & Tricks
Hector Ramos
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API Platform
Antonio Peric-Mazar
 
Webエンジニアから見たiOS5
Webエンジニアから見たiOS5Webエンジニアから見たiOS5
Webエンジニアから見たiOS5
Satoshi Asano
 
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
Doris Chen
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDB
MongoDB
 
CouchDB on Android
CouchDB on AndroidCouchDB on Android
CouchDB on AndroidSven Haiges
 
e10sとアプリ間通信
e10sとアプリ間通信e10sとアプリ間通信
e10sとアプリ間通信
Makoto Kato
 
Icinga 2009 at OSMC
Icinga 2009 at OSMCIcinga 2009 at OSMC
Icinga 2009 at OSMC
Icinga
 
OSMC 2009 | Icinga by Icinga Team
OSMC 2009 | Icinga by Icinga TeamOSMC 2009 | Icinga by Icinga Team
OSMC 2009 | Icinga by Icinga Team
NETWAYS
 
Saving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroSaving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio Haro
QuickBase, Inc.
 
Deploying your static web app to the Cloud
Deploying your static web app to the CloudDeploying your static web app to the Cloud
Deploying your static web app to the Cloud
Christoffer Noring
 
Refresh Austin - Intro to Dexy
Refresh Austin - Intro to DexyRefresh Austin - Intro to Dexy
Refresh Austin - Intro to Dexy
ananelson
 
MSFT Dumaguete 061616 - Building High Performance Apps
MSFT Dumaguete 061616 - Building High Performance AppsMSFT Dumaguete 061616 - Building High Performance Apps
MSFT Dumaguete 061616 - Building High Performance Apps
Marc Obaldo
 
Parse: 5 tricks that won YC Hacks
Parse: 5 tricks that won YC HacksParse: 5 tricks that won YC Hacks
Parse: 5 tricks that won YC Hacks
Thomas Bouldin
 
スマートフォンサイトの作成術 - 大川洋一
スマートフォンサイトの作成術 - 大川洋一スマートフォンサイトの作成術 - 大川洋一
スマートフォンサイトの作成術 - 大川洋一
okyawa
 
Angular 4 with firebase
Angular 4 with firebaseAngular 4 with firebase
Angular 4 with firebase
Anne Bougie
 
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
Naoki (Neo) SATO
 
System insight without Interference
System insight without InterferenceSystem insight without Interference
System insight without Interference
Tony Tam
 

Similar to Leveraging parse.com for Speedy Development (20)

Full Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQLFull Stack Development with Node.js and NoSQL
Full Stack Development with Node.js and NoSQL
 
Parse London Meetup - Cloud Code Tips & Tricks
Parse London Meetup - Cloud Code Tips & TricksParse London Meetup - Cloud Code Tips & Tricks
Parse London Meetup - Cloud Code Tips & Tricks
 
Building APIs in an easy way using API Platform
Building APIs in an easy way using API PlatformBuilding APIs in an easy way using API Platform
Building APIs in an easy way using API Platform
 
Webエンジニアから見たiOS5
Webエンジニアから見たiOS5Webエンジニアから見たiOS5
Webエンジニアから見たiOS5
 
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDB
 
CouchDB on Android
CouchDB on AndroidCouchDB on Android
CouchDB on Android
 
e10sとアプリ間通信
e10sとアプリ間通信e10sとアプリ間通信
e10sとアプリ間通信
 
Icinga 2009 at OSMC
Icinga 2009 at OSMCIcinga 2009 at OSMC
Icinga 2009 at OSMC
 
OSMC 2009 | Icinga by Icinga Team
OSMC 2009 | Icinga by Icinga TeamOSMC 2009 | Icinga by Icinga Team
OSMC 2009 | Icinga by Icinga Team
 
Saving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio HaroSaving Time And Effort With QuickBase Api - Sergio Haro
Saving Time And Effort With QuickBase Api - Sergio Haro
 
Deploying your static web app to the Cloud
Deploying your static web app to the CloudDeploying your static web app to the Cloud
Deploying your static web app to the Cloud
 
Refresh Austin - Intro to Dexy
Refresh Austin - Intro to DexyRefresh Austin - Intro to Dexy
Refresh Austin - Intro to Dexy
 
What's Parse
What's ParseWhat's Parse
What's Parse
 
MSFT Dumaguete 061616 - Building High Performance Apps
MSFT Dumaguete 061616 - Building High Performance AppsMSFT Dumaguete 061616 - Building High Performance Apps
MSFT Dumaguete 061616 - Building High Performance Apps
 
Parse: 5 tricks that won YC Hacks
Parse: 5 tricks that won YC HacksParse: 5 tricks that won YC Hacks
Parse: 5 tricks that won YC Hacks
 
スマートフォンサイトの作成術 - 大川洋一
スマートフォンサイトの作成術 - 大川洋一スマートフォンサイトの作成術 - 大川洋一
スマートフォンサイトの作成術 - 大川洋一
 
Angular 4 with firebase
Angular 4 with firebaseAngular 4 with firebase
Angular 4 with firebase
 
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
 
System insight without Interference
System insight without InterferenceSystem insight without Interference
System insight without Interference
 

More from Andrew Kozlik

Slack Development and You
Slack Development and YouSlack Development and You
Slack Development and You
Andrew Kozlik
 
3D Touch Implementation for Shortcuts and Peek/Pop Functionality
3D Touch Implementation for Shortcuts and Peek/Pop Functionality3D Touch Implementation for Shortcuts and Peek/Pop Functionality
3D Touch Implementation for Shortcuts and Peek/Pop Functionality
Andrew Kozlik
 
How to start developing iOS apps
How to start developing iOS appsHow to start developing iOS apps
How to start developing iOS apps
Andrew Kozlik
 
Core data orlando i os dev group
Core data   orlando i os dev groupCore data   orlando i os dev group
Core data orlando i os dev group
Andrew Kozlik
 
Mwyf presentation
Mwyf presentationMwyf presentation
Mwyf presentation
Andrew Kozlik
 
Last Ace of Space Postmortem
Last Ace of Space PostmortemLast Ace of Space Postmortem
Last Ace of Space Postmortem
Andrew Kozlik
 
Generating revenue with AdMob
Generating revenue with AdMobGenerating revenue with AdMob
Generating revenue with AdMobAndrew Kozlik
 

More from Andrew Kozlik (7)

Slack Development and You
Slack Development and YouSlack Development and You
Slack Development and You
 
3D Touch Implementation for Shortcuts and Peek/Pop Functionality
3D Touch Implementation for Shortcuts and Peek/Pop Functionality3D Touch Implementation for Shortcuts and Peek/Pop Functionality
3D Touch Implementation for Shortcuts and Peek/Pop Functionality
 
How to start developing iOS apps
How to start developing iOS appsHow to start developing iOS apps
How to start developing iOS apps
 
Core data orlando i os dev group
Core data   orlando i os dev groupCore data   orlando i os dev group
Core data orlando i os dev group
 
Mwyf presentation
Mwyf presentationMwyf presentation
Mwyf presentation
 
Last Ace of Space Postmortem
Last Ace of Space PostmortemLast Ace of Space Postmortem
Last Ace of Space Postmortem
 
Generating revenue with AdMob
Generating revenue with AdMobGenerating revenue with AdMob
Generating revenue with AdMob
 

Recently uploaded

Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 

Recently uploaded (20)

Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 

Leveraging parse.com for Speedy Development

  • 1. Leveraging parse.com for Speedy Development Andrew Kozlik @codefortravel www.justecho.com
  • 2. What is Parse? • Mobile Backend as a Service • Purchased by Facebook in 2013 • Rapidly build applications • Fantastic for prototyping
  • 3. Parse Products • Core • Push • Analytics
  • 4. Parse Products - Core • Core • Data Storage • Authentication • Scheduled Tasks • Custom API Endpoints
  • 5. Parse Products - Push • Push • Broadcasting push notifications • A/B testing • Channel Segmenting
  • 6. Parse Products - Analytics • Analytics • App Usage • Event Tracking • Crash Reporting
  • 7. Pricing - Core • 30 requests per second, 1 background job • $100 every 10 requests per second • 20GB File Storage • $0.03 per GB extra • 20GB DB Storage • $200 per GB extra • 2TB File Transfer • $0.10 per GB extra
  • 8. Pricing - Push • 1,000,000 unique push recipients • $0.05 per 1000 recipients after • $50 per million recipients
  • 9. Pricing - Analytics • Free! • Gee, thanks.
  • 10. Installation - iOS • Download framework • Add to project • Add dependencies • Initialize Parse in code • Use the Quick Start guide!
  • 11. Installation - Android • Download SDK • Add SDK to build.gradle • Update Manifest • Initialize Parse in application’s onCreate() • Use the Quick Start guide!
  • 12. Core • Schemaless • Object Creation • Object Retrieval • Relational Data • Local Data Store • Special Objects
  • 13. Schemaless • Properties automatically added to backend • Never have to look at backend • No backend code is written to save or retrieve objects
  • 14. Creating Objects • Create a new parse object with a specific class name. Classes are similar to tables. • Set all appropriate keys and values. • Save your object in background (or foreground if you really want to)
  • 15. iOS Code PFObject *presentation = [PFObject objectWithClassName:@“Presentation”]; presentation.title = @“Leveraging Parse for Speedy Development”; presentation.author = @“Andrew”; [presentation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { if (succeeded) { NSLog(@“Woo hoo!”); } }];
  • 16. Android Code ParseObject presentation = new ParseObject(“Presentation”) presentation.put(“title”, “Leveraging Parse for Speedy Development”); presentation.put(“author”,“Andrew”); presentation.saveInBackground();
  • 17. Retrieving Objects • Parse uses Queries to retrieve objects • Instantiate a new query for a class • Set any conditions • Retrieve on background thread
  • 18. iOS Code PFQuery *query = [PFQuery queryWithClassName:@“Presentation”]; [query whereKey:@“author” equalTo:@“Andrew”]; [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { for (PFObject *object in objects) { NSLog(@“%@“, object[@“title”]); } }];
  • 19. Android Code ParseQuery<ParseObject> query = ParseQuery.getQuery(“Presentation”); query.whereEqualTo(“author”, “Andrew”); query.findInBackground(new FindCallback<ParseObject>() { public void done(List<ParseObject> presentationList, ParseException e) { for (int i =0; i < presentationList.size(); i++) { ParseObject object = presentationList.get(i); System.out.println(object.get(“title”)); } } });
  • 20. Local Data Store • Save data locally to the device • Excellent for saving data for later processing • Leverages SQLite • Objects are “pinned” to background • Querying works just like network calls, just indicate you’re querying local store
  • 21. Relational Data • One to Many Relationships • Set one object’s key to the other object • Object ID is stored in DB • Multiple objects can be stored as an array • Many to Many Relationships • Use the relation object • Does not retrieve all objects in the relationship • Scalable • Relationships can be queried as Parse Objects
  • 22. iOS Code PFUser *user = [PFUser currentUser]; PFRelation *relation = [user relationForKey:@“likes”]; [relation addObject:presentation]; [user saveInBackground];
  • 23. Android Code ParseUser user = ParseUser.getCurrentUser(); ParseRelation<ParseObject> relation = user.getRelation(“likes”); relation.add(presentation); user.saveInBackground();
  • 24. Special User Object • Registration • Authentication • Anonymous Users • ACL
  • 25. Registration / Authentication • Required username and password on creation • Email and other profile fields are optional • Signup and Login methods are available • Optional e-mail verification
  • 26. Anonymous Users • Track a user without having them register • Convert anonymous users to registered users • Great for allowing access to your app
  • 27. Access Control Lists • Users can be granted privileges to objects • Read, Write, and Delete privileges can be set • ACL can be defaulted for all users
  • 28. iOS Code PFUser *user = [PFUser user]; user.username = @“akozlik”; user.password = @“secret_password”; user.email = @“andrew@justecho.com”; [user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { if (!error) { } else { NSLog(@“%@“, [error userInfo][@“error”]; } }];
  • 29. Android Code ParseUser user = new ParseUser(); user.setUsername(“akozlik”); user.setPassword(“secret_password”); user.setEmail(“andrew@justecho.com”); user.signUpInBackground(new SignUpCallback() { public void done (ParseException e) { if (e == null ) { } else { } } });
  • 30. Push • Setup • Installations • Channels • Advanced Targeting
  • 31. Setup • Set up your application to receive notifications • iOS • Upload certificates to Parse servers • Update application to register for push • Android • Update app permissions • Register application for push service • Parse guides are your friend
  • 32. Installations • Each installation of your app is saved to Parse • Used to target a specific device • Use installations in conjunction with channels • Unique per installation, not device • Uninstalling and reinstalling generates new installation ID
  • 33. Channels • Users can be subscribed to channels • Considered to be a grouping of installations • Use for specific group based messaging or marketing • Pushes can be sent directly from an app • Great for notifying users of related information
  • 34. Advanced Targeting • Query for specific users • Save keys to an installation object • Query that installation object subset • Save Users to installation objects!!!
  • 35. Analytics • Track app opens • Custom analytics, similar to Google Analytics • Track event with a dictionary or map of dimensions • View open rates, installation rates, crashes, etc.
  • 36. Other Goodies • Cloud Code • Uses Javascript API • Complex queries and endpoints • Background Jobs • Scheduled tasks for processing data • Work similar to cron tasks • Uses Javascript API
  • 37. Other Goodies • Boilerplate UI • Authentication • Registration • Table Views / List Views • In App Purchases • Add handlers to monitor when objects are purchased • Purchase object through Parse classes • Store downloadable purchases as Parse files
  • 38. Get Building! • parse.com • @codefortravel • www.justecho.com