what's parse

16
What’s Parse Tsutomu Ogasawara

Upload: tsutomu-ogasawara

Post on 10-May-2015

1.540 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: What's Parse

What’s Parse

Tsutomu Ogasawara

Page 2: What's Parse

https://www.parse.com/

Page 3: What's Parse

What’s Parse?

• BaaS for iOS / Android• Quick Start / Minimum Configuration• Full Stack SDK• Rest API / JavaScript SDK• Useful Documentations / Tutorials• Freemium

Page 4: What's Parse

Code ExamplesObjective-C for iOSPFObject *post = [PFObject objectWithClassName:@"Post"];[post setObject:@"Hello World" forKey:@"title"];[post setObject:@"I got Parse working on iOS!" forKey:@"content"];[post saveInBackground];

Java for AndroidParseObject post = new ParseObject("Post");post.put("title", "Hello World");post.put("content", "I got Parse working on Android!");post.saveInBackground();

JavaScriptvar Post = Parse.Object.extend("Post");var post = new Post();post.set("title", "Hello World");post.set("content", "I got Parse working on Android!");post.save(null, { success: function() {}, error: function() {} );

Page 5: What's Parse

User Authentication

Push Notification

Data Storage

Structure

Rest APIJavaScript SDK

iOS SDKAndroid SDKJavaScript SDK

Page 6: What's Parse

Functions

• Data Storage / File Storage• Push Notification Gateway• User Management• Geo Location Support• Facebook & Twitter

Page 7: What's Parse

Data Storage / File Storage

• SQL-like simple Database (PFObject)– Schemaless row-column model– Working in the background– Spreadsheet-like Data browser on parse.com– Many ways to retrieve data

• File store (PFFile)– File storage up to 10MB per file.– Working in the background and get the progress.– Examples.

Page 8: What's Parse

Save a photoPFObject *photo = [PFObject objectWithClassName:@"Photo"];PFUser *currentUser = [PFUser currentUser];[photo setObject:currentUser forKey:@"user"];[photo setObject:photoID forKey:@"photo_id"];[photo saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { if ( succeeded ) { } else { }}];

PFQuery *query = [PFQuery queryWithClassName:@"Photo"];[query orderByDescending:@"updatedAt"];[query findObjectsInBackgroundWithBlock: ^(NSArray *objects, NSError *error) { if ( ! error ) { } else { }}];

Retrieve photos

Page 9: What's Parse

Push Notification (PFPush)

• Cross platform– iOS -> Android / Android -> iOS– Broadcast to both OS apps.

• Send from– Apps– REST API– Web console on parse.com

Page 10: What's Parse

Subscribe push notification channelPFUser *user = [PFUser currentUser];NSString *channel = [NSString stringWithFormat:@"user_%@", user.objectId];[PFPush subscribeToChannelInBackground:channel block: ^(BOOL succeeded, NSError *error) { ...}];

PFUser *user = [photoObject objectForKey:@"user"];NSString *channel = [NSString stringWithFormat:@"user_%@", user.objectId];NSString *commenter = [currentUser valueForKeyPath:@"twitter_userdata.screen_name"];NSString *alert = [NSString stringWithFormat: @"%@ さんがコメントしました。 ", commenter];NSDictionary *data = [NSDictionary dictionaryWithObjectsAndKeys: commentObject.objectId, @"comment", photoObject.objectId, @"photo", alert, @"alert", @"default", @"sound", nil];[PFPush sendPushDataToChannelInBackground:channel withData:data];

Send a notification

Page 11: What's Parse

User Management (PFUser)

• Original Signup and Login– Email address verification– Resetting Password– User Interfaces

• Login with Facebook & Twitter • Security– Access Control List (PFACL)– Role-based Access Control (PFRole)

Page 12: What's Parse

Geo Location (PFGeoPoint)

• Store a geo location data in PFObject• Query objects– ordered by distance.– within miles / km / radians– within rectangle from south-west to north-east

• Examples

Page 13: What's Parse

Facebook & Twitter

• Authentication• Libralies– PF_Facebook which is the wrapper of Facebook

iOS SDK– PF_Twitter which calls Twitter REST API

Page 14: What's Parse

Facebook login

Twitter login

- (IBAction)pressLoginButton:(id)sender { NSArray *permissions = [[NSArray alloc] initWithObjects: @"user_likes", @"read_stream”, nil]; // Switch Facebook app or open facebook login page in Safari [PFFacebookUtils logInWithPermissions:permissions block: ^(PFUser *user, NSError *error) { if ( user && ! error ) { // logged in with Facebook } }];}

- (IBAction)pressLoginButton:(id)sender { // Call Twitter login dialog [PFTwitterUtils logInWithBlock:^(PFUser *user, NSError *error) { if ( user && ! error ) { // logged in with Twitter } }];}

Page 15: What's Parse

Twitter API call with authentication// generate request objectNSURL *url = [NSURL URLWithString: @"https://api.twitter.com/1/account/verify_credentials.json"];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

// sign the request with auth userPF_Twitter *twitter = [PFTwitterUtils twitter];[twitter signRequest:request];

// send requestNSURLResponse *response = nil;NSError *error = nil;NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];if ( data ) { // save user info NSDictionary *jsonObjects = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];}

Page 16: What's Parse

Thanks!