fkm blog

software開発に関することを書いていきます

Google I/O 2019: Overview of Privacy Changes in Android Q

youtu.be

Android Qでのプライバシーに関して。あれAmphitheatreなのに18分しかないぞ?

Android Qでは50以上のプライバシー/セキュリティに関する機能が追加。

Permission

Android 6.0でRuntime Permissionが追加された。

ところで、ユーザーがpermissionに対して拒否した理由トップ3

  1. そのpermissionを必要とすべきではない
  2. そのpermission許可しなくても動くはずだ
  3. あとで許可すればいいや

これらは、permissionを聞いた時点でユーザーにそのpermissionをとる価値を与えられていないのが原因。

ベストな方法

Step 1. 代替のAPIがあるなら、それを使い、permissionを取らないようにする。例えばSMSでのverificationをやる場合、SMSのパーミッションをとるのではなく、Play SMS Retriever APIを使うなど。別の例として、アプリユーザーが電話中かを調べる際、 READ_PHONE_STATE を取るのではなく、Audio Focus APIを使う(hackな感じだ。。。)。

Step 2. パーミッションのスコープを決め、どのようにとるかを決める。すべてのpermissionに許可を出すのは18%のユーザーだけ。

例えばユーザーがカメラのアイコンをタップしたとき、permissionを取るようにする。この場合、ユーザーにとってカメラの使用許可を聞かれるのは自然である。

また、ユーザーにより情報を与えるために、いきなりOSのAPIを呼ぶのではなく、ダイアログでこのpermissionに許可すると何がおきるかを説明するといった配慮も有効。

Android Qでは位置情報のpermissionの場合、ダイアログが異なる。locationのセッション参照。

Step 3. ユーザーを驚かせない。

  • 必要なデータだけを取る。
  • ユーザーの許可をとった上で情報を共有する。
  • 情報を端末の外に持ち出す場合、暗号化しセキュアにする。
  • とった情報は必要な期間だけ保持する(ずっと保持しつづけない)

端末ID

Android Qでは不変となる端末IDは READ_PHONE_STATE をとっても取得できなくなる。代わりにユーザーがリセット可能なIDを使おう。

MACアドレスのランダム化は、Android Pでは開発者オプションだったが、Andoird Qで正式採用される。

アプリの起動と通知

Android Qではバックグラウンドからのアプリ起動はブロックされる。

フォアグラウンドサービス

Android Qでは、フォアグラウンドサービスに種類が追加された。

  • sync
  • media playback
  • media projection
  • phone call
  • location
  • connected device

種類によって、使用できるpermissionに違いがある。

わ、ほんとに18分で終わった。。。