【iOS Swift】アプリにログイン機能をつけよう!

画像1

概要

ニフティクラウドmobile backendって何??

スマートフォンアプリのバックエンド機能(プッシュ通知・データストア・会員管理・ファイルストア・SNS連携・位置情報検索・スクリプト)が開発不要、しかも基本無料(注1)で使えるクラウドサービス!

注1:詳しくはこちらをご覧ください

画像2

動作環境

  • Mac OS X 10.10(Yosemite)
  • Xcode ver. 7.2.1
  • Simulator ver. 9.2

※上記内容で動作確認をしています。

手順

1. ニフティクラウドmobile backendの会員登録とログイン→アプリ作成

  • 上記リンクから会員登録(無料)をします。登録ができたらログインをすると下図のように「アプリの新規作成」画面が出るのでアプリを作成します

画像3

  • アプリ作成されると下図のような画面になります
  • この2種類のAPIキー(アプリケーションキーとクライアントキー)はXcodeで作成するiOSアプリにニフティクラウドmobile backendを紐付けるために使用します

画像4

  • 動作確認後に会員情報が保存される場所も確認しておきましょう

画像5

2. GitHubからサンプルプロジェクトのダウンロード

  • 下記リンクをクリックしてプロジェクトをダウンロードをMacにダウンロードします
  • SwiftLoginApp

3. Xcodeでアプリを起動

  • ダウンロードしたフォルダを開き、「SwiftLoginApp.xcworkspace」をダブルクリックしてXcode開きます(白い方です)

画像09

画像6

  • 「SwiftLoginApp.xcodeproj」(青い方)ではないので注意してください! 画像08

4. APIキーの設定

画像07

  • それぞれYOUR_NCMB_APPLICATION_KEYYOUR_NCMB_CLIENT_KEYの部分を書き換えます
  • このとき、ダブルクォーテーション(")を消さないように注意してください!
  • 書き換え終わったらcommand + sキーで保存をします

5. 動作確認

  • Xcode画面で左上の実行ボタン(さんかくの再生マーク)をクリックします

画像12

  • ビルド時にエラーが発生した場合の対処方法

  • Xcodeのバージョンが古い場合import NCMBにエラーが発生し、上手くSDKが読み込めないことがあります

  • その場合は【Swift】SDKの読み込みにuse framework!が使えない場合の対処方法をご覧いただき、別の読み込み方法をお試しください

  • シミュレーターが起動したら、Login画面が表示されます

  • 初回は__SignUp__ ボタンをクリックして、会員登録を行います

画像14

  • User NamePasswordを2つ入力して画像13ボタンをタップします
  • 会員登録が成功するとログインされ、下記画面が表示されます
  • このときmBaaS上に会員情報が作成されます!
  • ログインに失敗した場合は画面にエラーコードが表示されます
  • 万が一エラーが発生した場合は、こちらよりエラー内容を確認いただけます

画像15

  • Logout ボタンをタップするとログアウトし、元の画面に戻ります
  • 登録された会員情報を使ってLogin画面からログインが可能です(操作は同様です)

画像1

解説

サンプルプロジェクトに実装済みの内容のご紹介

SDKのインポートと初期設定

ロジック

  • Main.storyboardでデザインを作成し、LoginViewController.swift,SignUpViewController.swift,LogoutViewController.swiftにロジックを書いています
  • ログイン、会員登録、ログアウト部分の処理は以下のように記述されます ※ただし、左記処理以外のコードは除いています

LoginViewController.swift

// ログイン
NCMBUser.logInWithUsernameInBackground(self.userNameTextField.text, password: self.passwordTextField.text, block:{(user: NCMBUser?, error: NSError!) in
    if error != nil {
        // ログイン失敗時の処理

    }else{
        // ログイン成功時の処理

    }
})

SignUpViewController.swift

//会員登録
user.signUpInBackgroundWithBlock{(error: NSError!) in
    if error != nil {
        // 新規登録失敗時の処理

    }else{
        // 新規登録成功時の処理

    }
}

LogoutViewController.swift

// ログアウト
NCMBUser.logOut()

参考