SlideShare una empresa de Scribd logo
1 de 38
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

Más contenido relacionado

La actualidad más candente

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
Alexei Gorobets
 
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
Alexei Gorobets
 
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
 

La actualidad más candente (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 a Leveraging parse.com for Speedy Development

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 Android
Sven Haiges
 

Similar a 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
 

Más de Andrew Kozlik

Generating revenue with AdMob
Generating revenue with AdMobGenerating revenue with AdMob
Generating revenue with AdMob
Andrew Kozlik
 

Más de 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
 

Último

%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Último (20)

%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 

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