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

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

様々な言語からmBaaSを扱うために署名作成アルゴリズムを考える【Python編】

f:id:mbaasdevrel:20190222161221p:plain

プログラムからmBaaSを操作する際にはAPIを利用しますが、その時に肝になるのが署名文字列の作成です。パスなどをつなげて、SHA256でハッシュ値を作ったりと非常に面倒な処理が必要です。

アプリ側であればSDKを使ってもらえれば問題ありません。問題はサーバサイドで、オフィシャルではNode.js、非公式ではRubyとPHPくらいしかライブラリがありません。

そこで今回は一番面倒と思われる署名作成処理について、他の言語での実装方法について解説します。今回はPythonです。

続きを読む

様々な言語からmBaaSを扱うために署名作成アルゴリズムを考える【Java編】

f:id:mbaasdevrel:20190318155501p:plain

プログラムからmBaaSを操作する際にはAPIを利用しますが、その時に肝になるのが署名文字列の作成です。パスなどをつなげて、SHA256でハッシュ値を作ったりと非常に面倒な処理が必要です。

アプリ側であればSDKを使ってもらえれば問題ありません。問題はサーバサイドで、オフィシャルではNode.js、非公式ではRubyとPHPくらいしかライブラリがありません。

そこで今回は一番面倒と思われる署名作成処理について、他の言語での実装方法について解説します。今回はJava言語です。JavaはAndroid向けにSDKを提供していますが、これはAndroidと密結合になっており、サーバサイドなどでは利用できません。そこで純粋なJavaで署名処理を実装し直してみます。

続きを読む

KotlinでNCMBを使う:リレーションの使い方

f:id:mbaasdevrel:20181207095244p:plain

AndroidではJavaの他、Kotlinも公式言語としてサポートされています。KotlinはJVM上で動作する静的な型付け言語で、言語体系がSwiftに似ています。そのため、Swiftに慣れた開発者であればすぐに習得できるかと思います(似ているので逆に戸惑う部分もあるのですが)。

今回はAndroid Studio 3系を使い、KotlinでNCMBを利用する方法を解説します。今回はデータストアのオブジェクト同士を連携させる技術の一つ、リレーションの使い方を紹介します。

続きを読む

KotlinでNCMBを使う:ポインターの使い方

f:id:mbaasdevrel:20181207095244p:plain

AndroidではJavaの他、Kotlinも公式言語としてサポートされています。KotlinはJVM上で動作する静的な型付け言語で、言語体系がSwiftに似ています。そのため、Swiftに慣れた開発者であればすぐに習得できるかと思います(似ているので逆に戸惑う部分もあるのですが)。

今回はAndroid Studio 3系を使い、KotlinでNCMBを利用する方法を解説します。今回はデータストアのオブジェクト同士を連携させる技術の一つ、ポインターの使い方を紹介します。

続きを読む

KotlinでNCMBを使う:async/awaitと組み合わせる

f:id:mbaasdevrel:20181207095244p:plain

AndroidではJavaの他、Kotlinも公式言語としてサポートされています。KotlinはJVM上で動作する静的な型付け言語で、言語体系がSwiftに似ています。そのため、Swiftに慣れた開発者であればすぐに習得できるかと思います(似ているので逆に戸惑う部分もあるのですが)。

今回はAndroid Studio 3系を使い、KotlinでNCMBを利用する方法を解説します。今回はKotlin 1.3から使えるようになったasync/awaitを利用する例です。

続きを読む

匿名会員からパスワード認証に切り替えるための手順【Swift編】

f:id:mbaasdevrel:20190128141920p:plain アプリで最初はデモとして匿名会員を使いつつ、使い込んでいく内に他のデバイスでも情報を共有したり、正式な会員登録を行うステップに進むことがあります。その際の手順について紹介します。

フローについて

まず現在は匿名会員でログインしている状態とします。そのアカウントにパスワードを結びつけるフローになります。

NCMBAnonymousUtils.logIn({(user, error) in
    if (error != nil) {
        print(error);
    } else {
        self.lbluserName.text = user?.userName
    }
});

匿名認証機能は管理画面の設定で有効にします。

f:id:mbaasdevrel:20190128141908p:plain

メールアドレス認証を有効にする

NCMBではパスワード変更APIが提供されていないので、必ずメール経由になります。そのため、管理画面で必ずメールアドレス認証を有効にしてください。

f:id:mbaasdevrel:20190128141920p:plain

メールアドレスを設定する

次にメールアドレスを設定します。この時、一度メールアドレス確認メールが送信されます。

let email = txtEmail.text
let user = NCMBUser.current()
user?.setObject(email, forKey: "mailAddress")
user?.saveInBackground({(error) in
  if (error != nil) {
    print(error)
  } else {
    // 処理成功
  }
})

メールアドレス宛にパスワード変更メールを送信する

そしてログインしている状態でパスワードリセットを実行します。

NCMBUser.requestPasswordResetForEmail(inBackground: email, block: {(error) in
  if (error != nil) {
    print(error);
  } else {
    print("メール送信完了")
  }
})

メールに従って処理する

そうすると指定したメールアドレス宛にメールが来ます。そこには仮パスワードが記載されています。パスワード変更画面で仮パスワードを指定し、新しいパスワードを指定します。

f:id:mbaasdevrel:20190128141941p:plain

ログインする

パスワードを変更したら、そのメールアドレスとパスワードでログインできます。

NCMBUser.logInWithMailAddress(inBackground: txtEmail.text, password: txtPassword.text, block: {(user, error) in
  if (error != nil) {
    print(error)
  } else {
    self.lbluserName.text = user?.userName
  }
})

IDとパスワードログインにする

メールアドレスが設定できていれば、後は userName を変更するだけでID/パスワード認証に変更できます。その際には管理画面でID/パスワード認証を許可してください。

コードは以下のようになります。

NCMBUser.logInWithUsername(inBackground: txtUserName.text, password: txtPassword.text, block: {(user, error) in
  if (error != nil) {
    print(error)
  } else {
    self.lbluserName.text = user?.userName
  }
})

まとめ

ユーザ向けに正式登録後もデータを引き継ぎたい時には上記の処理を参考にしてください。処理は決して難しくありませんが、管理画面の設定を忘れずに行ってください。

Your Podfile requires that the plugin `cocoapods-keys` be installed. Please install it and try installation again. が発生した際の対処法

f:id:mbaasdevrel:20190122165016p:plain

NCMBのiOS SDKをCocoaPodsで利用している人は多いかと思います。そしてCocoaPodsの中で便利なのがアプリケーションキーやクライアントキーをコードから隠蔽してくれるcocoapods-keysです。

筆者環境ではrbenvを使っていたのですが、ある時 pod install を実行すると下記のエラーが出るようになりました。

$ pod install
[!] Your Podfile requires that the plugin `cocoapods-keys` be installed. Please install it and try installation again.

今回はその解決法です。

続きを読む

ファイルストア用に画像、CSS、JavaScriptファイルを一つのHTMLにまとめる

f:id:mbaasdevrel:20190318161207p:plain

手軽にアプリ内で使うファイルをアップロードできて、HTTPSで公開することもできるファイルストアですが、一つ大きな欠点があります。それは階層構造をサポートしないということです。

多くの場合、JavaScriptはjsまたはjavascriptsフォルダに、CSSはcssフォルダ、画像はimagesフォルダなどアセットごとに分類して保存しているはずです。HTMLファイルからはそれらのファイルを相対パスなどで指定しているでしょう。すべてが同じ階層に保存されてしまうファイルストアでは階層構造によるファイル管理ができず、不便です。

そこで今回は一つのHTMLファイル内にすべてのアセットを埋め込んでしまうinline-sourceを使ってこの問題に対応します。

続きを読む

Swift版iOS SDK Developer Previewをリリースしました

f:id:mbaasdevrel:20180806093819p:plain

iOSアプリを開発する際にSwiftを選択する方達が増えています。ニフクラ mobile backendではObjective-C版を提供していますが、利用する際にはブリッジファイルを作成する必要があります。

まだ開発途中ではありますが、Swiftで一から作成したSDKを提供開始しました。ぜひお試しください。

続きを読む

XcodeのプレイグラウンドでmBaaSを試す

f:id:mbaasdevrel:20190405161845p:plain

Xcodeにはプレイグラウンドがあります。ちょっとしたコードを試したり、使い方を学ぶのにぴったりな機能です。難点としては外部のフレームワークを試す場合、Swiftで作られていないといけないという問題があります。そのためiOS向けのSDKではプレイグラウンドで試せませんでした。

しかし、その問題は解決しそうです。mBaaSからSwift SDKがDeveloper Previewながらリリースされました。これを使えば、XcodeのプレイグラウンドでmBaaSの機能が試せます。この記事ではその使い方を紹介します。

続きを読む

JavaのネットワークアクセスデバッグにCharlesを使う

f:id:mbaasdevrel:20190318160130j:plain

mBaaSで最も厄介なのは署名の生成処理で、それが正しく作られているかどうか、ちゃんとしたレスポンスが返ってきているのかどうかはネットワークアクセスをデバッグしないと分かりません。しかしmBaaSはHTTPSアクセスなので、プロキシを通すとエラーになってしまいます。

そこでCharlesを使って証明書エラーを回避する方法がありましたので紹介します。なお試したのはmacOSです。Windowsでもできるとは思いますが、コマンドが異なるはずなのでご注意ください。

続きを読む

勉強会用にSORACOM LTE-M Buttonで受付機能を作りました

f:id:mbaasdevrel:20190123141206p:plain

ニフクラではNIFcLounge(ニフクラウンジ)という取り組みがあります。そこでは勉強会会場の無償提供を行っていますが、一つ大きな問題があります。それは会場に入る際にセキュリティゲートがあることです。

当たり前ですが、このゲートは社員証(または専用カード)がないと通過できません。開け放しにもできないので、勉強会がはじまる前は付きっきり、勉強会がはじまった後も適宜入場する人の対応が必要です。常に外にいるのも非効率ですし、勉強会側で後から来た人向けの案内が必要でした。

ゲートの前に呼び鈴を押しても良いのですが、勉強会をやっている時に大きな音が響くのも嫌ですし、逆に盛り上がっていて聞こえない可能性もあります。そこで簡単な受付システムを考えてみました。

続きを読む