『iOS 11』にはアプリ開発者にとって便利な機能も追加されています。そのうちの1つが中古のiPhoneを使う際は問題になりそうです。

不正行為を防ぐ「DeviceCheck」

iOS 11では、アプリ開発者向けに「DeviceCheck」が導入されます。これを利用すれば、開発者はアプリを利用するiPhoneの状態(4種類)を記録できます。

たとえば、あるアプリで1ヶ月間は無料で試せる機能を使い始めたiPhoneは、そのアプリが状態Aになったと記録。試用期間が終わるとアプリはiPhoneが状態Bになったと記録します。

従来の方法では、アプリを削除したりiPhoneを初期化したりすると、この状態のデータは消えてしまい、ふたたび試用できる状態になってしまいます。

しかしDeviceCheckはiPhoneの状態をAppleのサーバに保存するので、アプリを消去したりiPhoneを初期化したりしても、アプリはサーバと通信することでiPhoneの状態をチェックできます。

上記の例ではiPhoneを初期化したとしても、DeviceCheckを使えば状態Bにあることを確認できるので、ふたたび試用することはできません。

この仕組みは試用に限らず、たとえば初回利用時に限ってアイテムやクーポンを配りたいとき、1回だけ応募できるキャンペーンを展開したいとき、不正行為で罰したユーザーに再びサービスを利用させないときにも使われるでしょう。

iPhoneを売却・譲渡しても「状態」は変わらず

iPhoneを初期化しても状態のデータは保存されたままなので、iPhoneを売ったり譲ったりしても状態のデータは変わりません。

そのために中古のiPhoneでは、初めて使ったアプリにもかかわらず、無料試用期間がすでに終了していたり、初回限定のアイテムがもらえなかったりする問題が生じます。

その点はAppleも考慮しており、アプリ開発者が状態のデータを初期化したり編集したりできます。ただ、利用者から状態のデータをリセットするように求められたときの対応や方針は開発者任せになっているようなので、対応してもらえない場合もあるでしょう。

iOS 11の正式リリースは今秋ですが、その時点からすぐに起こる問題ではありません。アプリがDeviceCheckに対応する必要があるからです。しかし来年・再来年になれば、中古iPhoneでこうした問題が出てくるかもしれません。

DeviceCheckとプライバシー

ちなみに、DeviceCheckはiPhoneの状態がA・B・C・Dのどれなのかを確認できるだけなので、アプリ開発者が特定のiPhoneを追跡し続けることはできません。

AppleのサーバでiPhoneを識別する方法は不明ですが、DeviceCheckでは状態と日付のデータに加え、アプリが生成する短時間しか使えない識別番号もAppleのサーバに送信されるようです。したがってAppleは、この番号を元にiPhoneを永続的に識別できるすべを持っていると考えられます。

ただ、DeviceCheckではAppleは多くの情報を持てません。アプリから送られてくるのは状態と日付のデータ・識別番号だけです。アプリをどのように使っているのかを推測できるかもしれませんが、状態は4種類しかないのでそれにも限界があるでしょう。

参考

DeviceCheck | Apple Developer DocumentationApple Rolls Out New Feature That Permanently Associates Devices with Apps, Even After Deletion - Gizmodo