Screen Time API まとめ

Satsuki Hashiba
Jun 23, 2021

--

今秋リリース予定のiOS 15から、Screen Timeに関連したAPIが解禁されます。本記事ではWWDC2021の “Meet the Screen Time API” セッションおよびドキュメントを参考に、その詳細をまとめます。

Screen Time APIの概要

設計ガイドライン

Screen Time APIは以下の3つのガイドラインに沿って設計されています:

  1. 制限の提供
    アプリのブロックや設定の編集権限など、既存の制限を利用できる
  2. プライバシーの保護
    訪れたサイトや利用したアプリは家族以外知ることができない
  3. 新しい体験の提供
    カスタマイズにより、アプリ独自のScreen Timeを提供可能にする

3つのフレームワーク

Screen Time APIは以下の3つのフレームワークで構成されています:

  1. ManagedSettings
  2. FamilyControls
  3. DeviceActivity

これら3つを合わせると、「ManagedSettingsによるデバイス制限を、DeviceActivityによる監視を用いて適切なタイミングで有効化・無効化し、FamilyControlsでこれらの管理に認証を設ける」といったことができます。

ManagedSettings

Screen Timeで設定可能な制限(アプリのシールドやアカウントのロック、パスワードの編集権限、Webサイトのフィルタリングなど)を利用することができるフレームワーク。また、アプリのシールド画面を独自にカスタマイズできます。

ManagedSettingsStore

現在のユーザやデバイスに制限の設定を適応するためのクラス。それぞれのプロパティに値を設定することで、制限したり許可したりすることができます。

ShieldConfiguration

(正確にはManagedSettingsUIフレームワークのもの)Screen Timeによるデフォルトのシールド画面をカスタマイズするためのオブジェクト。基本のコンポーネントはデフォルトのままで、テキストや画像などを変更することができます。

Source: Meet the Screen Time API

FamilyControls

保護者の認証を設けることができるフレームワーク。これにより、Screen Time APIによる設定の変更や削除を保護者に限定できます。また、認証後は家族のScreen Timeの情報を閲覧することが可能です。

DeviceActivity

Webやアプリの利用状況を監視し、アプリが起動されていなくても必要時に処理を実行できるフレームワーク。

DeviceActivityScheduleDeviceActivityEventDeviceActivityCenterに登録することでデバイス利用の監視を開始し、DeviceActivityMonitorにて特定のタイミングに処理を実行することができます。

DeviceActivitySchedule

DeviceActivityScheduleを構成する主なパラメータは以下の通りです:

  • intervalStart
    監視開始時刻を表すDateComponents
  • intervalEnd
    監視終了時刻を表すDateComponents
  • repeats
    スケジュールを繰り返すかどうか
  • 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の値が利用されるものと思われます。

--

--