ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Swift + iOS SDKでスクリプトを使う

f:id:mbaasdevrel:20180806093819p:plain

NCMBのiOS SDKは正式にはSwiftをサポートしておらず、サンプルのコードもObjective-Cとなっています。Swiftもすでに3が主流となっており、利用者も増えています。そこでNCMB iOS SDKをSwiftでどう使えば良いかをコード例を用いつつ紹介します。

今回はiOS SDKでのスクリプト機能の使い方です。

スクリプト例

今回は以下のようなスクリプトです。ファイル名は email.js になります。SendGridを使ってメール送信を実現します。アプリのお問い合わせなどに使えます。今回はNode.jsですが、Rubyを使うこともできます。

const request = require('superagent');

const apiKey = 'YOUR_API_KEY';
module.exports = (req, res) => {
  const to = 'you@example.com';
  const from = req.body.email;
  const option = req.body.option;
  const body = req.body.body;
  const data = `to=${to}&from=${from}&subject=お問い合わせ【${option}】&text=${body}&html=<html><body>${body}</body></html>`;
  request
   .post('https://api.sendgrid.com/api/mail.send.json')
   .set('Authorization', 'Bearer ' + apiKey)
   .send(data)
   .end(function(err, response) {
     res.status(response.status).json(response.body);
   });
}

これは POST メソッドで呼び出します。また、リクエスト時のパラメータとして email / option / body を用意します。

アプリ画面

アプリの画面は上記のパラメータを入力できるようにしたものになります。そして送信ボタンを押すとスクリプトを呼び出します。

f:id:mbaasdevrel:20180913182958p:plain

ボタンを押した時の処理

まずスクリプトを作成します。ファイル名を指定するのと、HTTPメソッドを指定します。HTTPメソッドは NCMBScriptRequestMethod の中で定義されています。今回は POST を指定します。

let script = NCMBScript.init(name: "email.js", method: NCMBScriptRequestMethod.executeWithPostMethod)

そしてスクリプトを実行します。最初の引数がデータで、スクリプト側で req.body で取得できるものです。今回は二つ目の引数であるヘッダー、三つ目のクエリは指定していません。

script?.execute([
    "option": txtTitle.text ?? "",
    "body": txtBody.text ?? "",
    "email": txtEmail.text ?? ""
], headers: nil, queries: nil, with: { (result, error) in
    if error != nil {
    // 失敗時
        print("Error", error ?? "")
    } else {
    // 成功時
    }
})

結果の取得

多くの場合、結果はJSONで返すでしょう。今回は {"message": "success"} といったJSON文字列で返しています。しかし result は単なる文字列で返ってきますので、まずJSONとして解析する必要があります。それが以下のコードです。

let jsonString = String(data: result!, encoding: String.Encoding.utf8)
do {
  let json = try JSONSerialization.jsonObject(with: (jsonString?.data(using: .utf8)!)!, options: JSONSerialization.ReadingOptions.allowFragments)
  let message = json as? [String:String]
  print(message!["message"])
} catch {
  
}

これで success という文字列が取得できます。

まとめ

iOSでスクリプトを使うメリットとして、AndroidやUnityなど他の環境とフローを共通化したり、ガチャ機能など不正な利用を防止したい時に使えます。スクリプトの結果を解析する手間はありますが、JSONであれば慣れてしまえば特に問題なく使えるはずです。ぜひiOS SDKのスクリプト機能を使いこなしてください!

スクリプト (iOS) : 基本的な使い方 | ニフクラ mobile backend

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。