Help us understand the problem. What is going on with this article?

Parseからニフティクラウドmobile backendへの乗り換えてみた(iOS版 データストア)

More than 3 years have passed since last update.

主旨

アプリ開発者でParseを知らない人はあまりいないかと思いますが、1月29日、来年終了しますよというショックニュースが・・
うちのブログもこんな記事を出しています。

今回Parseユーザー向けに、検討材料として、乗り換え方法を調べて試したことを紹介します。今回対象はParseからニフティクラウドmobile backendに切り替える方法を紹介します。

開発者ではない方には、Nifty mBaaSでは「乗り換え相談窓口」を設けていますので、ぜひお気楽に!

プッシュ通知を見たい方はこちらのプッシュ通知版の記事があります。

乗り替える基本的なステップ

  • SDKをインポート
  • アプリ内、SDKを利用宣言
  • ニフティクラウドmobile backendでアプリ作成、キー(ApplicationKey, ClientKey)を取得
  • アプリ内で初期化
  • 実装コードを変更
  • その他:データー移行、設定変更

実際にやってみます!

前提

ParseのiOS v.1.12クイックスタートでデーターストア機能を動いているアプリは以下になります.(Xcode7.0)

parse_ios1.png

プロジェクト:

parse_ios2.png

コード:

    // ****************************************************************************
    // Uncomment and fill in with your Parse credentials:
     [Parse setApplicationId:@"APP ID" clientKey:@"CLIENT KEY"];
    //
    // If you are using Facebook, uncomment and add your FacebookAppID to your bundle's plist as
    // described here: https://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/
    // [PFFacebookUtils initializeFacebook];
    // ****************************************************************************

    //Data Save

    PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"];
    gameScore[@"score"] = @1337;
    gameScore[@"playerName"] = @"Sean Plott";
    gameScore[@"cheatMode"] = @NO;
    [gameScore saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (succeeded) {
            // The object has been saved.
        } else {
            // There was a problem, check error.description
        }
    }];

(1) ニフティクラウドmobile backendのSDKをインポート

こちらのSDKダウンロードページの通りに、Pod経由し、SDKをインストールしていきます。

まず、ターミナルで以下コマンドにてpodでインストール

pod init

Podfileを修正

platform :ios,'6.0'

target "YOUR_APP_TARGET" do
   pod 'NCMB', :git => 'https://github.com/NIFTYCloud-mbaas/ncmb_ios.git'
end

インストールコマンドを実行

pod install

インストール結果

pod install
/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.39.0/lib/cocoapods/command.rb:129: warning: Insecure world writable dir /usr in PATH, mode 040777
Updating local specs repositories


CocoaPods 1.0.0.beta.2 is available.
To update use: `gem install cocoapods --pre`
[!] This is a test version we'd love you to try.

For more information see http://blog.cocoapods.org
and the CHANGELOG for this version http://git.io/BaH8pQ.

Analyzing dependencies
Pre-downloading: `NCMB` from `https://github.com/NIFTYCloud-mbaas/ncmb_ios.git`
Downloading dependencies
Installing NCMB (2.2.4)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `ParseStarterProject.xcworkspace` for this project from now on.

現在のプロジェクトを閉じて、ParseStarterProject.xcworkspaceのファイルを開きます。

parse_ios3.png

(2) アプリ内、SDKを利用宣言

AppDelegate.mに以下のように追加します

#import <NCMB/NCMB.h>

(3)ニフティクラウドmobile backendでアプリ作成、キー(ApplicationKey, ClientKey)を取得

ニフティクラウドmBaaSの画面でアプリ作成、アプリ名を設定し、アプリ作成完了すると、二つキー(ApplicationKey, ClientKey)が作成されます。

20151209_qiita2.png

20151209_qiita3.png

(4)アプリ内で初期化

以下のようにAppDelegateのdidFinishLaunchingWithOptionsメソッドを修正します。

修正前

[Parse setApplicationId:@"APP ID" clientKey:@"CLIENT KEY"];

修正後

[NCMB setApplicationKey:@"APP KEY" clientKey:@"CLIENT KEY"];

(5)実装コードを変更

Niftyのmobile backendのSDKはParse SDKに互換性が高くて、実装コードには修正ところは少ないようですね!❤️

修正前

  PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"];
    gameScore[@"score"] = @1337;
    gameScore[@"playerName"] = @"Sean Plott";
    gameScore[@"cheatMode"] = @NO;
    [gameScore saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (succeeded) {
            // The object has been saved.
        } else {
            // There was a problem, check error.description
        }
    }];

修正後

    NCMBObject *obj = [NCMBObject objectWithClassName:@"GameScore"];
    [obj setObject:@1337 forKey:@"score"];
    [obj setObject:@"Sean Plott!" forKey:@"playerName"];
    [obj setObject:@NO forKey:@"cheatMode"];
    [obj saveInBackgroundWithBlock:^(NSError *error) {
        if (error) {
            // There was a problem, check error.description
        } else {
            // The object has been saved.
        }
    }];

その他:データー移行、設定変更など

ここに関しては難しいところかなと思いますので、知っている範囲で書いてみます。

  • ParseではExport機能あり, Data migrationツールもリリーされました。
  • ニフティクラウドmobile backendではデーターストアの新規クラス作成する時、CSV、Json, txtどちらもインポートできますが、会員データーやinstallation(プッシュ通知配信端末)データーという既存のものであればできません。
  • アプリ設定はそれぞれ違うので、検討した方が良さそうです!
  • Nifty mBaaSでは「乗り換え相談窓口」を設けていますので、ぜひお気楽に!

参考

Parse
Nifty mobile backend

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away