Your SlideShare is downloading. ×
Parse introduction
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Parse introduction

6,318

Published on

Published in: Technology
0 Comments
20 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,318
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
57
Comments
0
Likes
20
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 初めての Parse 株式会社 ミクシィ 田村 航弥12年7月23日月曜日
  • 2. agenda • @tamotamago • what’s Parse? • Data Store • Query • Push Notification12年7月23日月曜日
  • 3. @tamotamago について12年7月23日月曜日
  • 4. @tamotamago について • 田村 航弥 • 東京 2 年目 iOS App developer • mixi for iPhone, iPad 開発 • http://alpha.mixi.co.jp/2012/10974/ • tamotamago.com12年7月23日月曜日
  • 5. @tamotamago について • 第2回 iphone_dev_jp 東京iPhone/Mac勉強会 @k_kinukawa mixi の iOS アプリ開発 http://alpha.mixi.co.jp/2012/11000/12年7月23日月曜日
  • 6. What’s Parse?12年7月23日月曜日
  • 7. What’s Parse • Parse は BaaS (Backend as a Service)12年7月23日月曜日
  • 8. What’s Parse • Parse の機能 • ユーザ認証機能 • データストア、検索 • remote notification • twitter, facebok SDK をラップ • and so on ...12年7月23日月曜日
  • 9. 12年7月23日月曜日
  • 10. Parse の導入 • Parse Quick Start • tamotamago.com [Objective-C][Parse]初めての Parse ー導入編ー12年7月23日月曜日
  • 11. Data Store https://parse.com/docs/ios/api/Classes/PFObject.html12年7月23日月曜日
  • 12. Data Store • Key Value Store • ブラウザからデータ閲覧、編集が可能 • リレーションも持たせることができる12年7月23日月曜日
  • 13. Data Store12年7月23日月曜日
  • 14. Data Store テーブル名みたいなもの かってにつくられる 自分でつくっていく12年7月23日月曜日
  • 15. Save -blocks- PFObject *object = [[PFObject alloc]initWithClassName:@"TestClass"]; [object setObject:@"tamotamago" forKey:@"name"]; [object saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { NSString *result = succeeded ? @"success" : @"error"; NSLog(@"result : %@", result); }];12年7月23日月曜日
  • 16. Save -callbacks- - (void)viewDidLoad { [super viewDidLoad]; ! // Do any additional setup after loading the view, typically from a nib. PFObject *object = [[PFObject alloc]initWithClassName:@"TestClass"]; [object setObject:@"tamotamago2" forKey:@"name"]; [object saveInBackgroundWithTarget:self selector:@selector(saveCallback:error:)]; } -(void)saveCallback:(NSNumber*)result error:(NSError*)error { if(!error){ NSLog(@"%@", result); }else{ NSLog(@"%@", error); } }12年7月23日月曜日
  • 17. Update PFObject *object = [[PFObject alloc]initWithClassName:@"TestClass"]; [object setObject:@"tamotamago3" forKey:@"name"]; [object saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { [object setObject:@"tamotamago4" forKey:@"name"]; [object save]; }]; PFObject が 1 タプル12年7月23日月曜日
  • 18. Array Data PFObject *object = [[PFObject alloc]initWithClassName:@"TestClass"]; NSArray *names = [NSArray arrayWithObjects:@"tamotamago5", @"tamotamago6", nil]; [object addUniqueObjectsFromArray:names forKey:@"names"]; [object save];12年7月23日月曜日
  • 19. Relation -one-to-many- Post parent Comment Comment Comment12年7月23日月曜日
  • 20. Relation -one-to-many- PFObject *myPost = [PFObject objectWithClassName:@"Post"]; [myPost setObject:@"Im Hungry" forKey:@"title"]; [myPost setObject:@"Where should we go for lunch?" forKey:@"content"]; // Create the comment PFObject *myComment = [PFObject objectWithClassName:@"Comment"]; [myComment setObject:@"Lets do Sushirrito." forKey:@"content"]; // Add a relation between the Post and Comment [myComment setObject:myPost forKey:@"parent"]; // This will save both myPost and myComment [myComment saveInBackground];12年7月23日月曜日
  • 21. Relation -one-to-many- PFObject *myPost = [PFObject objectWithClassName:@"Post"]; [myPost setObject:@"Im Hungry" forKey:@"title"]; [myPost setObject:@"Where should we go for lunch?" forKey:@"content"]; // Create the comment PFObject *myComment = [PFObject objectWithClassName:@"Comment"]; [myComment setObject:@"Lets do Sushirrito." forKey:@"content"]; // Add a relation between the Post and Comment [myComment setObject:myPost forKey:@"parent"]; // This will save both myPost and myComment [myComment saveInBackground];12年7月23日月曜日
  • 22. Relation -many-to-many- Post Post Post like user user user12年7月23日月曜日
  • 23. Relation -many-to-many- Parse blog : A More Scalable Many-to-Many Approach PFObject *post2 = [PFObject objectWithClassName:@"Post"]; [post2 setObject:@"Im Hungry" forKey:@"title"]; [post2 setObject:@"Where should we go for dinner?" forKey:@"content"]; PFRelation *relation = [post2 relationforKey:@"likes"]; for (PFObject *object in objects){ [relation addObject: object]; } [post2 save];12年7月23日月曜日
  • 24. Relation -many-to-many- Parse blog : A More Scalable Many-to-Many Approach PFObject *post2 = [PFObject objectWithClassName:@"Post"]; [post2 setObject:@"Im Hungry" forKey:@"title"]; [post2 setObject:@"Where should we go for dinner?" forKey:@"content"]; PFRelation *relation = [post2 relationforKey:@"likes"]; for (PFObject *object in objects){ [relation addObject: object]; } [post2 save];12年7月23日月曜日
  • 25. Relation -many-to-many- Parse blog : A More Scalable Many-to-Many Approach PFObject *post2 = [PFObject objectWithClassName:@"Post"]; [post2 setObject:@"Im Hungry" forKey:@"title"]; [post2 setObject:@"Where should we go for dinner?" forKey:@"content"]; PFRelation *relation = [post2 relationforKey:@"likes"]; for (PFObject *object in objects){ [relation addObject: object]; } [post2 save];12年7月23日月曜日
  • 26. Queries https://parse.com/docs/ios/api/Classes/PFQuery.html12年7月23日月曜日
  • 27. Basic Query12年7月23日月曜日
  • 28. Basic Query PFQuery *query = [PFQuery queryWithClassName:@"TestClass"]; [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { if (!error) { // The find succeeded. for (PFObject *object in objects){ NSLog(@"object name -> %@", [object objectForKey:@"name"]); } } else { // Log details of the failure NSLog(@"Error: %@ %@", error, [error userInfo]); } }]; 2012-07-20 13:14:29.786 ParseTest[948:f803] object name -> tamotamago 2012-07-20 13:14:29.787 ParseTest[948:f803] object name -> tamotamago2 2012-07-20 13:14:29.787 ParseTest[948:f803] object name -> tamotamago4 2012-07-20 13:14:29.788 ParseTest[948:f803] object name -> (null) 2012-07-20 13:14:29.788 ParseTest[948:f803] object name -> tamotamago712年7月23日月曜日
  • 29. Basic Query PFQuery *query = [PFQuery queryWithClassName:@"TestClass"]; [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { if (!error) { // The find succeeded. for (PFObject *object in objects){ NSLog(@"object name -> %@", [object objectForKey:@"name"]); } } else { // Log details of the failure NSLog(@"Error: %@ %@", error, [error userInfo]); } }]; 2012-07-20 13:14:29.786 ParseTest[948:f803] object name -> tamotamago 2012-07-20 13:14:29.787 ParseTest[948:f803] object name -> tamotamago2 2012-07-20 13:14:29.787 ParseTest[948:f803] object name -> tamotamago4 2012-07-20 13:14:29.788 ParseTest[948:f803] object name -> (null) 2012-07-20 13:14:29.788 ParseTest[948:f803] object name -> tamotamago712年7月23日月曜日
  • 30. Where 句 [query whereKey:@"name" equalTo:@"tamotamago"];12年7月23日月曜日
  • 31. OrderBy [query orderByAscending:@"name"];12年7月23日月曜日
  • 32. IN 句 NSArray *array = [NSArray arrayWithObjects: @"tamotamago", @"tamotamago2", nil]; [query whereKey:@"name" containedIn:array];12年7月23日月曜日
  • 33. Relation query12年7月23日月曜日
  • 34. Relation query PFQuery *query = [[PFQuery alloc] initWithClassName:@"Post"]; [query findObjectsInBackgroundWithBlock:^(NSArray *posts, NSError *error) { for (PFObject *post in posts){ PFRelation *relation = [post relationforKey:@"likes"]; PFQuery *relationQuery = [relation query]; [relationQuery findObjectsInBackgroundWithBlock:^(NSArray *tamotamagos, NSError *error) { for(PFObject *object in tamotamagos){ NSLog(@"%@", [object objectForKey:@"name"]); } }]; } }];12年7月23日月曜日
  • 35. Paging query.skip = 3; [query findObjects]; [query findObjects]; object name -> tamotamago object name -> tamotamago2 object name -> (null) object name -> tamotamago4 object name -> tamotamago7 object name -> (null) object name -> tamotamago712年7月23日月曜日
  • 36. Push Notification https://parse.com/docs/ios/api/Classes/PFPush.html12年7月23日月曜日
  • 37. Setup https://www.parse.com/tutorials/ios-push-notifications 証明書の発行とか12年7月23日月曜日
  • 38. Setup12年7月23日月曜日
  • 39. Setup - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions { // Override point for customization after application launch. [Parse setApplicationId:@"app id" clientKey:@"client key"]; [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge| UIRemoteNotificationTypeAlert| UIRemoteNotificationTypeSound]; return YES; } - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken { // Tell Parse about the device token. [PFPush storeDeviceToken:newDeviceToken]; // Subscribe to the global broadcast channel. [PFPush subscribeToChannelInBackground:@""]; }12年7月23日月曜日
  • 40. 12年7月23日月曜日
  • 41. channel Push を投げるゾーン12年7月23日月曜日
  • 42. channel - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken { // Tell Parse about the device token. [PFPush storeDeviceToken:newDeviceToken]; // Subscribe to the global broadcast channel. [PFPush subscribeToChannelInBackground:@""]; [PFPush subscribeToChannelInBackground:@"tamotamago"]; }12年7月23日月曜日
  • 43. channel tamotamago Broadcast12年7月23日月曜日
  • 44. channel12年7月23日月曜日
  • 45. channel tamotamago3 tamotamago2 tamotamago Broadcast12年7月23日月曜日
  • 46. send notification PFPush *push = [[PFPush alloc] init]; NSArray *channels = [NSArray arrayWithObjects:@"tamotamago", nil]; [push setChannels:channels]; [push setMessage:@"push test"]; [push sendPushInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { }];12年7月23日月曜日
  • 47. channel push!! tamotamago3 tamotamago2 tamotamago Broadcast12年7月23日月曜日
  • 48. おわりに12年7月23日月曜日
  • 49. Others • Users • https://parse.com/docs/ios/api/Classes/PFUser.html • Geo Points • https://parse.com/docs/ios/api/Classes/PFGeoPoint.html • Facebook Users • https://parse.com/docs/ios/api/Classes/PFFacebookUtils.html • and so on ...12年7月23日月曜日
  • 50. でもお高いんでしょう?12年7月23日月曜日
  • 51. 12年7月23日月曜日
  • 52. enjoy12年7月23日月曜日

×