アプリによくあるユーザ登録、会員管理、ログイン、ログアウトってあるんではないでしょうか。
基本的な機能なのに、作るのはなかなか大変、サーバも用意さないといけないですね!
そこで、われわれが提供しているニフティクラウドmobile backendを使えば、一通り実装ができます。
今回Androidでこちらのとてもきれいなテンプレートを参考して、サーバ機能を入れて、Android用ログインテンプレートを作りました。コードをぜんぶ公開していますので、そのままダウンロードしていただいたら動くものなので、ぜひお試しください!
ソースコードはこちらです。
概要
1)ニフティクラウド mobile backend - mBaaSでの会員の認証方法は以下の4つがあります。
- ユーザ名・パスワードでの認証
- メールアドレス・パスワードでの認証
- SNSアカウントでの認証
- 匿名認証
2)今回はAndroidで、ユーザ名・パスワードでの認証方法について説明していきます。
イメージ的は以下のようになります。
準備
- Android Studio
- mBaaSのアカウント作成
手順
- テンプレートプロジェクトをダウンロード
- SDKを追加(済み・最新SDKを利用したい場合、更新作業を行ってください)
- アプリ作成し、キーを設定
- 動作確認
STEP 1. テンプレートプロジェクト
- プロジェクトのGithubページから「Download ZIP」をクリックします。
- プロジェクトを解凍します。
- AndroidStudioを開きます。
- 解凍したプロジェクトを選択します。
STEP 2. SDKを追加と設定 (済み)
Android SDKとは、ニフティクラウドmobile backendが提供している「データストア」「プッシュ通知」などの機能を簡単まコードで利用できるものです。
mBaaSでは、Android, iOS, Unity, JavaScript SDKを提供しています。
今回Android SDKの追加し方と設定を紹介します。
※ダウンロードしたプロジェクトには既に設定済みですが、最新版が必要な場合は入れ替える必要があります。また既存のプロジェクトでニフティクラウドmobile backend を利用する場合も同じくSDKの実装が必要です。
- SDKダウンロード
SDKはここ(SDKリリースページ)から取得してください。- NCMB.jarファイルがダウンロードします。
- SDKをインポート
- app/libsフォルダにNCMB.jarをコピーします
- 設定追加
- app/build.gradleファイルに以下を追加します
dependencies {
compile 'com.google.code.gson:gson:2.3.1'
compile files('libs/NCMB.jar')
}
- androidManifestの設定
タグの直前に以下のpermissionを追加します。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
STEP 3. アプリキー設定
-
アプリ作成されると下図のような画面になります。
-
この2種類のAPIキー(アプリケーションキーとクライアントキー)は先ほどインポートしたAndroidStudioで作成するAndroidアプリにニフティクラウドmobile backendの紐付けるため、あとで使います。
この後動作確認でデータが保存される場所も確認しておきましょう。
-
AndroidStudioからビルドする。
- 「プロジェクト場所」\app\build\outputs\apk\ ***.apk ファイルが生成される
STEP 4. 確認
アプリにてボタンをタブし、新規登録、ログインする事が確認出来ます。
mBaaS側も会員管理データが保存されたことを確認しています!
コード説明
- SDKおよび必要なライブラリーをインポートします
import com.nifty.cloud.mb.core.DoneCallback;
import com.nifty.cloud.mb.core.NCMB;
import com.nifty.cloud.mb.core.NCMBException;
import com.nifty.cloud.mb.core.NCMBUser;
- SDKを初期化
MainActivityのOnCreateメソッドに実装、ここでAPIキーを渡します。
@Override
protected void onCreate(Bundle savedInstanceState) {
<省略>
//**************** APIキーの設定とSDKの初期化 **********************
NCMB.initialize(this, "YOUR_APPLICATION_KEY", "YOUR_CLIENT_KEY");
}
1)会員の新規登録実装
- mBaaSのAndroid SDKが提供するNCMBUserクラスが会員管理を操作するためのクラス。データを保存するには、このクラスが提供するsignUpInBackgroundメソッドを利用し、登録、ログインします。
- 入力ユーザ名とパスワードの妥当性を確認し、設定したユーザ名(userName)とパスワード(password)で会員登録を行います。
- signUpInBackground()を実施することで、非同期に保存が行われます。非同期実施するため、DoneCallBack()を使って、成功・失敗処理を指定します。
- 会員登録に成功した場合は、ログイン成功ページを表示します。
- 会員登録に失敗した場合、アラートでログイン失敗を表示します。
public void signup() {
<省略>
// TODO: Implement your own signup logic here.
//NCMBUserのインスタンスを作成
NCMBUser user = new NCMBUser();
//ユーザ名を設定
user.setUserName(name);
//パスワードを設定
user.setPassword(password);
//設定したユーザ名とパスワードで会員登録を行う
user.signUpInBackground(new DoneCallback() {
@Override
public void done(NCMBException e) {
if (e != null) {
//会員登録時にエラーが発生した場合の処理
onSignupFailed();
} else {
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
// On complete call either onSignupSuccess or onSignupFailed
// depending on success
onSignupSuccess();
// onSignupFailed();
progressDialog.dismiss();
}
}, 3000);
}
}
});
}
2)既存会員のログイン実装
- mBaaSのAndroid SDKが提供するNCMBUserクラスが会員管理操作するためのクラス。このクラスが提供するloginInBackgroundメソッドを利用し、ログインします。
- 入力されたユーザ名とパスワードの妥当性を確認し、ユーザ名とパスワードでログインを実行します。
- loginInBackground()を実施結果に応じて、
- ログインに成功した場合は、ログイン成功ページを表示します。
- ログインに失敗する場合、アラートでログイン失敗を表示します。
public void login() {
<省略>
// TODO: Implement your own authentication logic here.
//ユーザ名とパスワードを指定してログインを実行
try {
NCMBUser.loginInBackground(name, password, new LoginCallback() {
@Override
public void done(NCMBUser user, NCMBException e) {
if (e != null) {
//エラー時の処理
onLoginFailed();
} else {
new android.os.Handler().postDelayed(
new Runnable() {
public void run() {
// On complete call either onLoginSuccess or onLoginFailed
onLoginSuccess();
// onLoginFailed();
progressDialog.dismiss();
}
}, 3000);
}
}
});
} catch (NCMBException e) {
e.printStackTrace();
}
}
参考
サンプルコードをカスタマイズすることで、様々な機能を実装できます!
データ保存・データ検索・会員管理・プッシュ通知などの機能を実装したい場合には、
以下のドキュメントもご参考ください。
最後に
データを保存には自前でサーバを立て、運用・設計するだけでなく、アプリとサーバー間のやりとりなど、さまざまなことを考慮しなければなりません。そこでこのようなmBaaSサービスを使って、サーバー運用の手間をなくすことが、アプリ開発を最速・最短で行う重要な方法となってきます。開発も数行のコード書けばいいという便利なものです!しかも無料から始められます!導入してみてはいかがでしょうか?
License
参考:Android login material design
NIFTY Cloud mobile backendのAndroid SDKのライセンス