前回のエントリ「BaaSサービスのParseを使ってみた」で紹介したBaaSサービスのParseですが、実際Parseを使うと具体的にどういう事が出来るのか、もう少し突っ込んで調べてみました。
- ParseのAPI
- ParseのAPIは大きく、
- iOS API
- Android API
- REST API
一方、REST APIはモバイルアプリに限らず、HTTP通信が可能なあらゆるものからParseクラウドのデータに対してアクセスが可能です。
つまりモバイルアプリでParseクラウドに蓄積したデータを、サマリ/表示するWebサイトの構築が可能になるので、ソーシャルなサービスも実現が可能になります。
REST APIを使った用途は、以下の様なケースを想定しているようです。
- WebサイトにParseクラウドのデータを表示。
- 大量のデータをParseクラウドにアップロードする。
- Parseクラウドのデータをダウンロードし、分析に利用。
- iOS/Android以外のアプリからもParseクラウドのデータを利用。
- 他のBaaSサービスに乗替えたい時に、データを全部エクスポート。
一応REST経由で全てのデータにアクセスが可能な様なので、クラウドに集めたデータを加工してWebサイトで表示する様な用途には対応しているみたいですね。
最後の全てのデータをエクスポートできるという点は、後々BaaSプロバイダを乗替える選択肢を手元に残せるので、こういった手段が用意されているのは安心ですね。 - iOS APIで何が出来るか
- iOS APIは以下の9つのAPIに分類されています。それぞれ機能の簡単な紹介とサンプルのコードを。
- データの保存
PFObjectsというオブジェクトでKey-Value形式でデータを保存。ValueにはString、Number、Boolean、またはArray、DictionaryとJSONエンコードが出来るものは何でもクラウドに保存が可能。
PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"]; [gameScore setObject:[NSNumber numberWithInt:1337] forKey:@"score"]; [gameScore setObject:@"Sean Plott" forKey:@"playerName"]; [gameScore setObject:[NSNumber numberWithBool:NO] forKey:@"cheatMode"]; [gameScore save]; - データの抽出
PFQueryというオブジェクトを使い、クラウドに保存したデータを抽出する。キャッシュ機構も備えており、オフライン状態でも自動で制御してくれるそう。PFQuery *query = [PFQuery queryWithClassName:@"GameScore"]; [query whereKey:@"playerName" equalTo:@"Dan Stemkoski"]; NSArray* scoreArray = [query findObjects]; - ファイルの保存
ドキュメント、画像、音源、ビデオ、バイナリファイルなど単体で10Mbを上限としてファイルを保存する事が出来る。 ファイルはPFFileというオブジェクトに変換し、PFObjectに格納する。ダウンロード/アップロードのプログレスの取得も可能。
NSData *imageData = UIImagePNGRepresentation(image); PFFile *imageFile = [PFFile fileWithName:@"image.png" data:imageData]; [imageFile save]; PFObject *userPhoto = [PFObject objectWithClassName:@"UserPhoto"]; [userPhoto setObject:@"My trip to Hawaii!" forKey:@"imageName"]; [userPhoto setObject:imageFile forKey:@"imageFile"]; [userPhoto save]; - プッシュ通知
iOSデバイスへのプッシュ通知。Parseの管理コンソールからプッシュ通知を手動で配信する事も可能。 - ユーザー管理
PFObjectのサブクラスのPFUserを使ってユーザーの登録・管理が可能。サインイン、ログイン、パスワードリセットのI/Fを用意。他のPFObjectとの紐付けも容易に出来るよう。PFUser *user = [PFUser user]; user.username = @"my name"; user.password = @"my pass"; user.email = @"email@example.com"; // other fields can be set just like with PFObject [user setObject:@"415-392-0202" forKey:@"phone"]; [user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { if (!error) { // Hooray! Let them use the app now. } else { NSString *errorString = [[error userInfo] objectForKey:@"error"]; // Show the errorString somewhere and let the user try again. } }]; - Facebook連携
Parse SDKはFacebook SDKを内包しており、PFUserとFacebookアカウントのリンクが数行で出来てしまうとの事。 - Twitter連携
Facebookと同様にTwitterとの連携もサポート。 - ジオデータの保存
PFGeoPointというオブジェクトで位置情報の保存、抽出が可能。PFGeoPoint *point = [PFGeoPoint geoPointWithLatitude:40.0 longitude:-30.0]; [placeObject setObject:point forKey:@"location"]; - ユーザーインターフェース
今のところPFQueryTableViewControllerというUITableViewしか無いようですが、要するにParseクラウドのデータと直接連携するUITablewViewControllerです。ページネーション、プルでリフレッシュなど機能を備えています。
ちょっとボリュームが多いので、順次試しながら紹介していきたいと思います。 - データの保存
