FacebookやTwitterなどのソーシャルログインを使っている場合、専用クライアントアプリでない時にはSign in with Appleも追加しなければなりません。これは6月末までを予定しており、それ以降審査提出時に対応が必須になります。
ニフクラ mobile backendでもSign in with Appleに対応しており、これは各種SDKについて含まれます。ゲーム開発でよく使われるUnityについても同様です。今回はUnity SDK利用時のSign in with Apple対応法を紹介します。
- Unity SDKを導入する
- 設定する
- 空のオブジェクトを追加する
- Apple Developer Programで設定する
- mBaaSの管理画面でSign in with Appleの設定をする
- ビルドする
- 実行結果
- まとめ
Unity SDKを導入する
まずはUnity SDKを導入します。SDKのダウンロードは Releases · NIFCLOUD-mbaas/ncmb_unity より可能です。執筆時点での最新バージョンは 4.2.0 となっています。基本的に最新版を利用してください。
ダウンロードして解凍後、ncmb.unitypackageを実行すると、インポート画面が表示されるので、そのままインポートを行います。
設定する
インポートした Assets/Prefabs
のフォルダ内にある NCMBSettings.prefab
と NCMBManager.prefab
をヒエラルキー(Hierarchy)にドラッグ&ドロップします。
ヒエラルキーにある NCMBSettings.prefab
をクリックすると、インスペクタにアプリケーションキーとクライアントキーを設定する欄が表示されます。ここに、NCMBのアプリケーションキー、クライアントキーを設定します。
空のオブジェクトを追加する
ではここから最短でSign in with Appleを実装します。空のGame Objectを作成し、さらにAssetsの中で空のC#スクリプトを追加します。C#スクリプトを追加したら、Game Objectにドラッグ&ドロップしてアタッチします。
ここからコードになります。C#スクリプトをダブルクリックして編集します。まずNCMBを読み込みます。
using NCMB;
次にクラス変数として NCMBAppleAuthenManager
を定義します。
private NCMBAppleAuthenManager appleAuthenManager;
開始時の Start メソッドでは NCMBAppleAuthenManager
を初期化し、さらに後述する SignInWithAppleIdPress
を実行します。
void Start() { this.appleAuthenManager = new NCMBAppleAuthenManager(); this.SignInWithAppleIdPress(); }
SignInWithAppleIdPress
の内容は次の通りです。細かい処理はコメントを参考にしてください。注意点として NCMBAppleParameters
ではiOSアプリのバンドルIDを指定します。これはあなたのアプリのバンドルIDと読み替えてください。
public void SignInWithAppleIdPress() { // ネイティブiOSコードを実施 this.appleAuthenManager.NCMBiOSNativeLoginWithAppleId( credential => { // 取得した結果 credential を使ってNCMB用のパラメータを作成 NCMBAppleParameters appleParameters = new NCMBAppleParameters(credential.UserId, credential.AuthorizationCode, "com.nifcloud.mbaas.signinwithapple"); // ユーザオブジェクトを作成 NCMBUser user = new NCMBUser(); // 作成したパラメータを適用 user.AuthData = appleParameters.param; // 認証処理を実行 user.LogInWithAuthDataAsync((NCMBException e) => { // 結果がnullでない場合はエラー if (e != null) { // 認証失敗時の処理 Debug.Log ("エラー: " + e.ErrorMessage); } // 結果のnullの場合は成功 else { // 認証成功時の処理 Debug.Log("会員認証完了しました。"); } }); }, // Sign in with Appleの時点でエラー error => { Debug.Log("エラー: " + error.Code); }); }
Apple Developer Programで設定する
Sign in with Appleを利用する際にはApple Developer Programでキーを設定する必要があります。手順についてはこちらを参照してください。
mBaaSの管理画面でSign in with Appleの設定をする
続いてmBaaSの管理画面でもSign in with Appleの設定をします。これは、先ほどのiOS Member Centerで作成したキーなどの指定になります。詳細はこちらを参照してください。
ビルドする
設定が終わったらアプリをビルドします。Xcode向けに書き出したら、Capabiritiesの設定でSign in with Appleを指定します。
さらにGeneral > Frameworks, Libraries, and Embedded Contentでフレームワークを設定します。以下の3つのフレームワークを追加します。
- AuthenticationServices.framework
- UserNotifications.framework
- WebKit.framework
この時、Unity 2019.3以降かどうかで指定が変わりますので注意してください。
- 2019.3より前
ターゲットがアプリ本体 - 2019.3以降
ターゲットがUnityFramework
実行結果
ビルド後、アプリを実行すると、次のようにSign in with Appleのアクションシートが表示されます。
問題なければログメッセージとして、会員認証完了しましたと出るはずです。
まとめ
Sign in with Appleの設定はUnityのコードだけでなく、iOS Member Centerでの設定やmBaaS管理画面での設定、Xcodeでの作業など多岐に渡ります。コード量は少ないですが、慣れないと手間取ることもあるでしょう。対応が迫られている方は早めに実装をお願いします。
何か詰まったところがあれば、コミュニティにて質問をお願いします。