App Store Review ガイドライン 5.1.1において、アカウント作成に対応しているすべてのAppを対象に、アカウント情報を削除する機能の実装が必要となりました。
今回は、ガイドラインに沿ったアプリへと改修するにあたり、対応が必要な内容を記事にまとめていきます。
そもそもApp Store Review ガイドラインとは?
App Store Review ガイドラインはアプリをApp Storeへリリースする際の審査基準を定めたものです。
App Store Reviewガイドライン - Apple Developer
アプリのリリース時にはAppleによる審査が入ります。この審査はガイドラインに基づいて行われるため、内容を遵守したアプリにしていく必要があります。
アカウント削除に関するガイドライン
2022年6月30日以降、アカウントの作成に対応したAppをApp Storeに提出する場合は、ユーザー自身がそのApp内でアカウントを削除できるようにする必要があります。(Apple公式サポートページより引用)
このガイドラインは、個人データの管理をさらに強化する事を目的として追加されました。
ガイドラインによれば、アプリ利用時にログインを要するアプリに関して、アカウントの削除および、個人に紐づいたデータを削除する機能を実装する必要があるとの事です。
アカウントの削除に関しては退会機能の実装で対応が出来ます。 一方で、ポインタやリレーションを用いて個人データを紐づけている場合は退会だけでなく、参照先データも併せて削除する必要があるということですね。
NCMBで退会機能を実装する方法
NCMBの会員管理・認証機能を用いてアカウント管理を行っている場合も対象となり、退会機能の実装は必要となりますのでご紹介いたします。
会員管理・認証機能によって登録されたアカウント情報は、NCMBのデータストアにUserクラスとして格納されています。
※管理画面上では会員管理とデータストアは異なって見えますが、会員管理で表示しているアカウント情報はデータストアのUserクラスを表示しているものになります。
したがって、Userクラスに格納されたデータに対して、データストアのオブジェクトの削除を活用する事でアカウント情報を削除することが出来ます。
実装の流れ
ユーザーがアプリからユーザー自身のデータ削除を行うには、そのアカウントでログインしている状態で、カレントユーザーを取得(ログイン中のユーザーインスタンス)し、取得したユーザーに対してdeleteメソッドを実行します。
JavaScriptSDKを利用した退会処理の実装は以下の通りです。
//現在セッションに使用しているユーザー情報を取得 let currentUser = ncmb.User.getCurrentUser(); //ユーザーを削除 currentUser.delete()
ポインタやリレーションを用いた関連データがある場合
Userクラスとデータストア上の他のクラスの情報を関連付けていた場合、退会時には関連付けた情報も併せて消去するような実装が必要になります。
NCMBでのデータの関連付けにはポインタやリレーションを活用している可能性がありますので、アカウント情報の削除を行う前に、それらの参照先である関連データの削除対応が必要になってきます。
※ポインタはクラス同士を1対1の関係で結びつけ、リレーションはクラス同士を1対nの関係で結びつけます。
ポインタを使っている場合
Userクラスのデータにポインタを用いている場合、UserデータにobjectIdを持つため、先にポインタでの参照先データを削除してからUserデータの削除を実行すれば、ガイドラインに沿った退会処理となります。
リレーションを使っている場合
Userクラスのデータにリレーションを用いている場合、UserデータにobjectIdを持たないため、別途リレーションで紐づいている情報を取得してデータの削除を実行する必要があります。
その他参考ブログ
こちらのQiitaブログもご参考ください。
おわりに
App Storeの審査はアプリリリースの大きな壁とも言われています。
他にも審査を乗り切るために考慮すべき点はいくつかありますが、今月中に対応するべき内容として本記事を執筆いたしました。
皆様のアプリにお役立ていただけましたら幸いです。