App Store Review ガイドライン 5.1.1において、アカウント作成に対応しているすべてのAppを対象に、アカウント情報を削除する機能の実装が必要となりました。
今回は各言語向けに、退会処理の書き方を解説します。
物理削除と論理削除
退会処理は大きく分けて2つあります。1つが物理削除で、もう1つが論理削除です。論理削除は何らかのフィールドの値によって、有効な会員か否かを判別するものになります。物理削除は実データを削除する(復元不可)処理になります。
NCMBでは一般的に物理削除を対象とします。App Store Review ガイドラインから照らし合わせても、物理削除の方が安全でしょう。
削除時の権限
ユーザーデータは、基本的に本人のみが参照・更新・削除できる権限で作成されます。そのため、退会処理(データ削除処理)を行えるのは本人のみになります。
管理者が行う場合には、管理画面上で行う形になるでしょう。
各SDKでの実装
ではここから、各SDKでの実装について解説します。
Swift SDKでの実装
Swift SDKでの実装例です。
if let user = NCMBUser.currentUser { user.deleteInBackground(callback: { result in switch result { case .success: print("退会しました") case let .failure(error): print("削除に失敗しました: \(error)") } }) } else { print("未ログインまたは取得に失敗") }
Objective-Cでの実装
Objective-C SDKでの実装例です。
NCMBUser *currentUser = [NCMBUser currentUser]; [currentUser deleteInBackgroundWithBlock:^(NSError *error) { if (error){ NSLog(@"退会しました"); } else { NSLog(@"削除に失敗しました"); } }];
Javaでの実装
Javaでの実装例です。Androidでは現状退会処理に関する決まりはないと思いますが、Android/iOS両方にアプリを提供している場合には統一しておいた方が良いでしょう。
NCMBUser user = NCMBUser.getCurrentUser(); user.deleteObjectInBackground(new DoneCallback() { @Override public void done(NCMBException e) { if (e != null) { Log.d("Debug", "退会しました"); } else { Log.d("Debug", "削除に失敗しました"); } } });
Kotlinでの実装
Kotlinでの実装例です。
val currentUser: NCMBUser = NCMBUser().getCurrentUser() if (currentUser.getObjectId() != null) { currentUser.deleteInBackground(NCMBCallback { e, ncmbObj -> if (e != null) { Log.d("failure", "削除に失敗しました : " + e.message) } else { Log.d("success", "退会しました") } }) }
JavaScriptでの実装
JavaScriptでの実装例です。
const currentUser = ncmb.User.getCurrentUser(); await currentUser.delete();
Unityでの実装
Unityでの実装例です。
NCMBUser currentUser = NCMBUser.CurrentUser; currentUser.DeleteAsync ((NCMBException e) => { if (e != null) { UnityEngine.Debug.Log ("削除に失敗しました"); } else { UnityEngine.Debug.Log ("退会しました"); } });
まとめ
退会処理を実装していないと、アプリの審査で弾かれるようになっています。認証処理を実装しているアプリは忘れないように実装しましょう。
NCMBではメールやID認証の他、ソーシャルメディア(Twitter/Facebook/Google/Apple)、匿名認証が利用できます。ぜひアプリの中で活用してください。