Screen Time API まとめ
今秋リリース予定のiOS 15から、Screen Timeに関連したAPIが解禁されます。本記事ではWWDC2021の “Meet the Screen Time API” セッションおよびドキュメントを参考に、その詳細をまとめます。
Screen Time APIの概要
設計ガイドライン
Screen Time APIは以下の3つのガイドラインに沿って設計されています:
- 制限の提供
アプリのブロックや設定の編集権限など、既存の制限を利用できる - プライバシーの保護
訪れたサイトや利用したアプリは家族以外知ることができない - 新しい体験の提供
カスタマイズにより、アプリ独自のScreen Timeを提供可能にする
3つのフレームワーク
Screen Time APIは以下の3つのフレームワークで構成されています:
- ManagedSettings
- FamilyControls
- DeviceActivity
これら3つを合わせると、「ManagedSettingsによるデバイス制限を、DeviceActivityによる監視を用いて適切なタイミングで有効化・無効化し、FamilyControlsでこれらの管理に認証を設ける」といったことができます。
ManagedSettings
Screen Timeで設定可能な制限(アプリのシールドやアカウントのロック、パスワードの編集権限、Webサイトのフィルタリングなど)を利用することができるフレームワーク。また、アプリのシールド画面を独自にカスタマイズできます。
ManagedSettingsStore
現在のユーザやデバイスに制限の設定を適応するためのクラス。それぞれのプロパティに値を設定することで、制限したり許可したりすることができます。
ShieldConfiguration
(正確にはManagedSettingsUIフレームワークのもの)Screen Timeによるデフォルトのシールド画面をカスタマイズするためのオブジェクト。基本のコンポーネントはデフォルトのままで、テキストや画像などを変更することができます。
FamilyControls
保護者の認証を設けることができるフレームワーク。これにより、Screen Time APIによる設定の変更や削除を保護者に限定できます。また、認証後は家族のScreen Timeの情報を閲覧することが可能です。
DeviceActivity
Webやアプリの利用状況を監視し、アプリが起動されていなくても必要時に処理を実行できるフレームワーク。
DeviceActivitySchedule
やDeviceActivityEvent
をDeviceActivityCenter
に登録することでデバイス利用の監視を開始し、DeviceActivityMonitor
にて特定のタイミングに処理を実行することができます。
DeviceActivitySchedule
DeviceActivityScheduleを構成する主なパラメータは以下の通りです:
intervalStart
監視開始時刻を表すDateComponentsintervalEnd
監視終了時刻を表すDateComponentsrepeats
スケジュールを繰り返すかどうかwarningTime
(optional)
監視開始時などのイベントの指定時間前に警告を生成することができる。
DeviceActivityEvent
DeviceActivityEventを構成するパラメータは以下の通りです:
categories
エンターテイメントやソーシャルなど、監視対象のアプリカテゴリapplications
監視対象のアプリwebDomains
監視対象のWebドメインthreshold
監視を行う時間。DateComponentsで指定でき、対象のカテゴリ/アプリ/Webドメインの利用時間がこのしきい値を超えたときに処理を実行することができます。
これらをDeviceActivityCenterに登録して監視を開始すると、DeviceActivityMonitorのメソッドが必要なタイミングで発動します。
DeviceActivityMonitor
DeviceActivityMonitorで呼ばれるメソッドは以下の通りです:
intervalDidStart(for:)
監視が開始した時に呼ばれるメソッド。引数には監視アクティビティを識別するDeviceActivityNameが渡されます。「指定されたアプリケーションをシールドする」といった処理が想定されています。intervalDidEnd(for:)
監視が終了した時に呼ばれるメソッド。「アプリケーションのシールドを解除する」といった処理が想定されています。intervalWillStartWarning(for:)
監視が開始する少し前に呼ばれるメソッド。DeviceActivityScheduleの警告時間を5分に指定した場合、監視が始まる5分前にメソッドが呼ばれます。「監視が開始される旨を通知で送信する」などの処理が想定されています。intervalWillEndWarning(for:)
監視が終了する前に呼ばれるメソッド。eventDidReachThreshold(_:activity:)
イベントの対象カテゴリ/アプリ/Webドメインの利用時間が指定のthreshold
を超えたときに呼ばれるメソッド。eventWillReachThresholdWarning(_:activity:)
イベントがしきい値に到達する少し前に呼ばれるメソッド。ドキュメントに記載はありませんが、おそらくDeviceActivityScheduleのwarningTime
の値が利用されるものと思われます。