Upload
thomas-bouldin
View
222
Download
2
Tags:
Embed Size (px)
DESCRIPTION
A quick overview of Parse for the YC Hacks info session
Citation preview
Parse Thomas Bouldin @inlined
Which is better:To expend great effort
Or achieve great results?
Making mobile apps is hard
Database REST API
ZZZ
Server++
+ users+ security
CachingNetworking
+ +
The fun part!
no nono
no
no
yes!
Parse Pillars
Push AnalyticsCore
Parse Core
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];
Storing DataParse Data
!
Armor *shield = [Armor object]shield.name = @“shield”;shield.cost = 50;
Can also use like a class:
Fetching DataParse Data
PFQuery *query = [Armor query]; [query whereKey:@“name” equalTo:@“shield”];[query whereKey:@“cost” lessThan:@50]; [query findObjectsInBackgroundWithBlock: ^(NSArray *objects, NSError *error) { /* ... */}];
Signing UpParse Social
PFUser *user = [PFUser user]; user.username = @“inlined”;user.password = @“YC H4cks”; [user signUpInBackgroundWithBlock: ^(BOOL success, NSError *error) { /* ... */}];
Social IntegrationParse Social
[PFFacebookUtils logInWithPermissions:nil block: ^(PFUser *user, NSError *error) { /* ... */}];
UI ControlsParse Social
Replace login code with built-in viewcontrollersFully customizable
Parse Cloud CodeFor when server-side code is needed or easierTrusted execution environmentData pipeline integrationThird party integrationHosting static and dynamic resources
Parse Cloud CodeParse.Cloud.afterSave( “Message”, function(request) { Parse.Push.send({ channel: request.object.get(“room”), data: { alert: request.object.get(“message”) } });});
Parse Push
RegisteringParse Push
[PFPush storeDeviceToken:deviceToken]; [PFPush subscribeToChannelInBackground:@“hack”];
SendingParse Push
PFPush *push = [PFPush push]; push.channel = @“hack”; push.message = @“Move fast and build things”; [push sendInBackgroundWithBlock: ^(BOOL succeeded, NSError *error) { /* ... */}];
Parse Analytics
App OpensParse Analytics
[PFAnalytics trackAppOpenedWithLaunchOptions:launchOptions];
Custom EventsParse Analytics
NSDictionary *dimensions = @{ @“product”: @“pwnies”, @“location”: @“US-‐west”, @“login”: @“Facebook”,};
[PFAnalytics trackEvent:@“purchase” dimensions:dimensions];
Automatic TrackingParse Analytics
Automatic TrackingParse Analytics
Let’s Build
parse.com/tutorialsparse.com/apps/quickstart
github.com/ParsePlatform/
P
Backup
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]
Logging InParse Social
PFUser *user = [PFUser logInWithUsername:@“inlined” password:@“YC H4cks”]; // From now on:PFUser *user = [PFUser currentUser];
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