アプリのバックエンドの機能をサポートするクラウドサービス「ニフティクラウド mobile backend」を試してみました
このサービスを利用すれば、サーバにデータを保存したり、プッシュ通知を送信したりといった、サーバ関連の面倒な処理を簡単に実装できるようになります。自分でサーバを用意したり、サーバに設置するプログラムを書く必要がなくなるわけですね
APIリクエスト(「サーバにデータを保存しておいて!」とお願いしたりする)が200万回⁄月のBASICは無料、5000万回⁄月のExpartは月30,000円です
とりあえず無料で始められるのはいいですね
詳しい料金はこちらです
料金 | ニフティクラウド mobile backend
ドラクエポータルアプリや、最近流行った「ひとりぼっち惑星」も「ニフティクラウド mobile backend」を利用しているそうですよ!
事例紹介 | ニフティクラウド mobile backend
iOSアプリに組み込んでみた
「クイックスタート」に従って組み込んでみました
この解説通りにすれば、簡単にサーバへのデータ保存が実装できます
イントロダクション (iOS) : クイックスタート | ニフティクラウド mobile backend
ただし、Objective-Cのプロジェクトに組み込む事を想定した説明なので、Swiftを使っている場合は説明を若干読み替えて進める必要があります
今回は「Test」という名前でSwiftプロジェクトを作成、ニフティクラウドのSDKはダウンロードして組み込む形で実装しました
以下、Swiftプロジェクトに組み込む場合の変更箇所です
ブリッジングヘッダファイルを作る
クイックスタートの「SDKの読み込み」のセクションを以下の方法に変更する必要があります
Swiftから直接Objective-CのSDKのヘッダファイルは読み込めないので、ブリッジングヘッダという特殊なヘッダファイルを作ります
ヘッダファイルの名前はなんでもいいみたいですが、Xcodeが自動生成する場合は、
{ProductModuleName}-Bridging-Header.h
という名前になるので、それに合わせた名前でヘッダファイルを作ります
今回は「Test-Bridging-Header.h」です
できたら「Build Setting」の「Swift Compiler」の「Objectve-C Bridging Header」に今回作成したブリッジングヘッダファイルのパスを設定します
今回は「Test/Test-Bridging-Header.h」です
ブリッジングヘッダファイルを編集する
作成したブリッジングヘッダに、ニフティクラウドSDKのヘッダファイル読み込みのコードを追加します
CocoaPodsとSDKを手動で組み込んだ場合とではimport文が異なります
// CocoaPodsを利用する方法 #import <NCMB/NCMB.h> // SDKをダウンロードして利用する方法 #import "NCMB/NCMB.h"
今回はSDKをダウンロードして組み込んだので
#ifndef Test_Bridging_Header_h #define Test_Bridging_Header_h #import "NCMB/NCMB.h" // #import "NCMB.h"でいいかも? #endif /* Test_Bridging_Header_h */
です
AppDelegateに処理を追加
AppDelegate.swiftのapplication:didFinishLaunchingWithOptions:にコードを実装します
Swiftだとこんな感じ
YOUR_APPLICATION_KEYとYOUR_CLIENT_KEYは自分のキーに変更してください
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // APIキーの設定とSDK初期化 NCMB.setApplicationKey("YOUR_APPLICATION_KEY", clientKey: "YOUR_CLIENT_KEY") // クラスのNCMBObjectを作成 let object = NCMBObject(className: "TestClass") object.setObject("Hello, NCMB!", forKey: "message") object.saveInBackgroundWithBlock { (error: NSError!) in if error != nil { // 保存に失敗した場合の処理 print( "失敗" ) } else { // 保存に成功した場合の処理 print( "成功" ) } } return true }
Swift3だとこうなります
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // APIキーの設定とSDK初期化 NCMB.setApplicationKey("YOUR_APPLICATION_KEY", clientKey: "YOUR_CLIENT_KEY") // クラスのNCMBObjectを作成 let object = NCMBObject(className: "TestClass") object?.setObject("Hello, NCMB!", forKey: "message") object?.saveInBackground { (error: Error?) in if error != nil { // 保存に失敗した場合の処理 print( "失敗" ) } else { // 保存に成功した場合の処理 print( "成功" ) } } return true }
これを実行すれば、「Hello, NCMB!」というテキストデータがサーバに保存されます
めちゃくちゃ簡単ですね。機会があれば利用してみようと思います