28
Parse Thomas Bouldin @inlined

Parse: 5 tricks that won YC Hacks

Embed Size (px)

DESCRIPTION

A quick overview of Parse for the YC Hacks info session

Citation preview

Page 1: Parse: 5 tricks that won YC Hacks

Parse Thomas Bouldin @inlined

Page 2: Parse: 5 tricks that won YC Hacks

Which is better:To expend great effort

Or achieve great results?

Page 3: Parse: 5 tricks that won YC Hacks

Making mobile apps is hard

Page 4: Parse: 5 tricks that won YC Hacks

Database REST API

ZZZ

Server++

+ users+ security

CachingNetworking

+ +

The fun part!

no nono

no

no

yes!

Page 5: Parse: 5 tricks that won YC Hacks
Page 6: Parse: 5 tricks that won YC Hacks

Parse Pillars

Push AnalyticsCore

Page 7: Parse: 5 tricks that won YC Hacks

Parse Core

Page 8: Parse: 5 tricks that won YC Hacks

Storing DataParse Data

PFObject is like an NSMutableDictionary in the cloud

PFObject *armor = [PFObject objectWithClassName:@“Armor”];[armor setObject:@“Shield” forKey:@“name”];armor[@“price”] = @50;[armor saveInBackground];

Page 9: Parse: 5 tricks that won YC Hacks

Storing DataParse Data

!

Armor  *shield  =  [Armor  object]shield.name  =  @“shield”;shield.cost  =  50;

Can also use like a class:

Page 10: Parse: 5 tricks that won YC Hacks

Fetching DataParse Data

PFQuery  *query  =  [Armor  query];  [query  whereKey:@“name”  equalTo:@“shield”];[query  whereKey:@“cost”  lessThan:@50];  [query  findObjectsInBackgroundWithBlock:    ^(NSArray  *objects,  NSError  *error)  {    /*  ...  */}];

Page 11: Parse: 5 tricks that won YC Hacks

Signing UpParse Social

PFUser  *user  =  [PFUser  user];  user.username  =  @“inlined”;user.password  =  @“YC  H4cks”;  [user  signUpInBackgroundWithBlock:  ^(BOOL  success,  NSError  *error)  {    /*  ...  */}];

Page 12: Parse: 5 tricks that won YC Hacks

Social IntegrationParse Social

[PFFacebookUtils  logInWithPermissions:nil                                                                block:  ^(PFUser  *user,  NSError  *error)  {    /*  ...  */}];

Page 13: Parse: 5 tricks that won YC Hacks

UI ControlsParse Social

Replace login code with built-in viewcontrollersFully customizable

Page 14: Parse: 5 tricks that won YC Hacks

Parse Cloud CodeFor when server-side code is needed or easierTrusted execution environmentData pipeline integrationThird party integrationHosting static and dynamic resources

Page 15: Parse: 5 tricks that won YC Hacks

Parse Cloud CodeParse.Cloud.afterSave(        “Message”,  function(request)  {          Parse.Push.send({            channel:  request.object.get(“room”),            data:  {                alert:  request.object.get(“message”)            }        });});

Page 16: Parse: 5 tricks that won YC Hacks

Parse Push

Page 17: Parse: 5 tricks that won YC Hacks

RegisteringParse Push

[PFPush  storeDeviceToken:deviceToken];  [PFPush  subscribeToChannelInBackground:@“hack”];

Page 18: Parse: 5 tricks that won YC Hacks

SendingParse Push

PFPush  *push  =  [PFPush  push];  push.channel  =  @“hack”;  push.message  =  @“Move  fast  and  build  things”;  [push  sendInBackgroundWithBlock:    ^(BOOL  succeeded,  NSError  *error)  {    /*  ...  */}];

Page 19: Parse: 5 tricks that won YC Hacks

Parse Analytics

Page 20: Parse: 5 tricks that won YC Hacks

App OpensParse Analytics

 [PFAnalytics        trackAppOpenedWithLaunchOptions:launchOptions];

Page 21: Parse: 5 tricks that won YC Hacks

Custom EventsParse Analytics

NSDictionary  *dimensions  =  @{    @“product”:  @“pwnies”,    @“location”:  @“US-­‐west”,    @“login”:  @“Facebook”,};

[PFAnalytics  trackEvent:@“purchase”                          dimensions:dimensions];      

Page 22: Parse: 5 tricks that won YC Hacks

Automatic TrackingParse Analytics

Page 23: Parse: 5 tricks that won YC Hacks

Automatic TrackingParse Analytics

Page 24: Parse: 5 tricks that won YC Hacks

Let’s Build

parse.com/tutorialsparse.com/apps/quickstart

github.com/ParsePlatform/

P

Page 25: Parse: 5 tricks that won YC Hacks

Backup

Page 26: Parse: 5 tricks that won YC Hacks

Access ControlParse Social

//  Automatically  own  all  objects  you  create  but //  allow  everyone  to  read  them.PFACL  *acl  =  [PFACL  ACL];[acl  setPublicReadAccess:YES];  [PFACL  setDefaultACL:acl  withAccessForCurrentUser:YES]

Page 27: Parse: 5 tricks that won YC Hacks

Logging InParse Social

PFUser  *user  =    [PFUser  logInWithUsername:@“inlined”                                      password:@“YC  H4cks”];  //  From  now  on:PFUser  *user  =  [PFUser  currentUser];

Page 28: Parse: 5 tricks that won YC Hacks

Storing DataParse Data

Can also use like a class:@interface  Armor  :  PFObject<PFSubclassing>//  Properties  are  synthesized  with  @dynamic@property  (nonatomic)  NSString  *name;@property  (nonatomic)  int  price;@end