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

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

NCMBを使ったユーザー退会処理の書き方

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)、匿名認証が利用できます。ぜひアプリの中で活用してください。

会員管理・認証 (Swift) : 基本的な使い方 | ニフクラ mobile backend

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。