Integration with Parse(IOS)

1.为什么选择Parse?

优点是目前Parse国内国外都可以使用, 开发者不需要做国内国外两个版本,Parse的API设计规范,文档清晰,易集成,价格比较优惠;缺点就是服务响应速度较慢,有时服务无响应(开发时遇到过几次),由于是国外服务,有被国内禁用的风险.

国内也有类似数据存储云服务,例如Bmob和leanCloud,他们的优势在于国内服务响应速度快.不过还是推荐使用Parse集成,即使对Parse服务稳定性的有所顾虑,切换成国内服务也会很快.

2.parse的集成

sdk快速集成

PFObject:

这是Parse提供最基础的数据存储,每个PFObject包含JSON-compatible数据的键-值对.objectId是唯一标识每个PFObject,objectId的生成有Parse控制.PFObject不支持自定义unique key.

PFObject保存数据

PFObject *user = [PFObject objectWithClassName:@"user"];
user[@"username"] = @"test001";
user[@"nickname"] = @"泰斯特";
[user saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
  if (succeeded) {
    // The object has been saved.
  } else {
    // There was a problem, check error.description
  }
}];

PFObject查询数据

PFQuery *query = [PFQuery queryWithClassName:@"user"];
[query getObjectInBackgroundWithId:@"xWMyZ4YEGZ" block:^(PFObject *user, NSError *error) {
    // Do something with the returned PFObject in the user variable.
    NSLog(@"%@", user);
}];

PFObject修改数据

PFQuery *query = [PFQuery queryWithClassName:@"user"];

// Retrieve the object by id
[query getObjectInBackgroundWithId:@"xWMyZ4YEGZ"
                             block:^(PFObject *user, NSError *error) {
    // Now let's update it with some new data. In this case, only cheatMode and score
    // will get sent to the cloud. playerName hasn't changed.
    user[@"nickname"] = @"泰斯特1";
    user[@"username"] = @"test0002";
    [user saveInBackground];
}];

PFObject数据删除

[user deleteInBackground];

作为简单的数据存储,PFObject满足绝大部分需求,同时PFObject支持权限管理,可以设置read/write权限(前提是需要有PFUser,PFRole).但是PFObject不支持自定义unique key,如果想保证某条数据的唯一性需要程序自身控制.

PFUser:

Parse提供了PFUser对象,除了objectId,username也可以唯一标识PFUser.保证了每一个用户只有一行数据.PFUser是PFObject的子类,继承了PFObject所有特性,但是PFUser需要有注册,登录,登出操作.

PFUser注册

    PFUser *user = [PFUser user];
    user.username = @"my name";
    user.password = @"my pass";
    user.email = @"email@example.com";

    [user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
      if (!error) {   // Hooray! Let them use the app now.
      } else {   NSString *errorString = [error userInfo][@"error"];   // Show the errorString somewhere and let the user try again.
      }
    }];

PFUser登录

[PFUser logInWithUsernameInBackground:@"myname" password:@"mypass"
  block:^(PFUser *user, NSError *error) {
    if (user) {
      // Do stuff after successful login.
    } else {
      // The login failed. Check error to see why.
    }
}];

PFUser登出

[PFUser logOut];

PFUser帮我们提供了整个用户的解决方案,注册登录登出,用户信息的存储.

登录之后,保存的PFObject的读写权限与当前用户关联.例如,用户的照片,日志,状态可以用PFObject存储,设置为Public Read/登录用户write权限,其它用户可查看,只有发布者可以编辑修改.

3.小结

Parse提供了丰富的API,除了上述介绍的PFObject和PFUser,例如PFQuery(查询),PFACL(权限设置),PFFile(文件存储)等本文不多介绍.如果不考虑国外环境,可以选择一些国内的云服务存储,如Bmob,LeanCloud,而且API与Parse基本一致,很快能够从Parse切换到国内这些云存储服务.

posted @ 2015-08-04 15:04  shuffle  阅读(297)  评论(0编辑  收藏  举报