Screen Time APIとは
Screen Time APIとは、iPhoneやiPadの設定アプリにあるスクリーンタイムの機能を開発者が使用するためのAPIです。
親が子どものiPhoneの使用制限をするペアレンタルコントロールに使用したり、アプリをどのくらい使用したかをチェックすることができます。
WWDC21で、Screen Time APIとして開発者に開放されました。
Screen Time APIについて - WWDC21 - ビデオ - Apple Developer
そして、WWDC22では自分の端末の制限をコントロールする機能が追加されました。
Screen Time APIの最新情報 - WWDC22 - ビデオ - Apple Developer
詳しくは、WWDCのセッションをご覧ください。
ざっくりと概要を知りたいという方は、こちら↓の記事がわかりやすいです。
Screen Time API まとめ - Satsuki Hashiba - Medium
Family Controlsとは
Screen Time APIにはいくつか主要なAPIが含まれていますが、その中のひとつでありプライバシーポリシーの核となるのがFamily Controlsです。
Family Controlsはゲートウェイとして Screen Time APIへのアクセスを許可します。ペアレントコントロールAppの削除を防ぎ AppやWebサイトを識別する Opaqueトークンでユーザープライバシーを守ることができます。
Screen Time APIの最新情報 - WWDC22 - ビデオ - Apple Developerより引用
Family Controlsを使うためには使用許可が必要
上記の通りFamily ControlsはScreen Time APIのプライバシーを守るための重要なAPIです。そのため、アプリで使用する場合には、下記のリクエストフォームで申請をしてAppleから使用許可をもらう必要があります。
Family Controls & Personal Device Usage Entitlement Request - Contact Us - Apple Developer
使用許可をもらってからリリースするまでについては、こちら↓の記事が詳しいのでぜひご覧ください。
Screen Time APIを用いたiOSアプリをストアにリリースするまで #Swift - Qiita
落とし穴に落っこちた
前置きはこのくらいにして、ここからが本題です。
わたしが開発した集中アプリのFocus Rainbowは、Screen Time APIを使っています。
ちょっと宣伝タイムです。
Focus Rainbowは、今集中したいアプリだけを実行することができます。
便利なタイマー機能や、楽しいキャラクターが集中をサポートしてくれるので、ぜひお試しください!
宣伝タイム終わりです。
Focus Rainbowでは本体のFocusRainbowとApplication ExtensionのShieldActionとShieldConfigurationという三つのTargetがあります。
ShieldActionとShieldConfigurationは、以下のスクリーンショットのようなスクリーンタイムのシールド画面の実装を行うものです。
Family Controlsの申請をするときに、本体のFocusRainbowターゲットだけ申請すればいいだろうと思って申請しました。
無事に許可が降りたので、Additional CapabilitiesでFamily Controls(Distribution)をチェックしてProvisioning Profileを作成してからArchiveしてValidateしたら……
なんとエラーになってしまいました!
そして落とし穴に落っこちたことに気がついたのです。
Family Controlsの申請をするときは、本体のターゲットだけでなくApplication Extensionのターゲットも申請しないといけないことに。
というわけで、ShieldActionとShieldConfigurationの二つを追加で申請しました(申請フォームのBundle IDの入力欄はひとつしかないので二回に分けて申請しました)。
紆余曲折ありましたが、追加分も許可が降りて無事にFocus Rainbowをリリースすることができました。ふう、よかった。
おまけ
こちら↓の記事では、Family Controlsの申請は時間がかかるということが書かれています。
Screen Time APIを用いたiOSアプリをストアにリリースするまで #Swift - Qiita
申請の結果メールが届くまでなんと5週間もかかった
追記:2023.5現在デベロッパーフォーラムには2ヶ月待っても返信がないとの書き込みもある
わたしが申請した当時(2024年10月)は、2週間で結果のメールが届きました。
1年以上経って審査の手続きが効率化されたのかもしれません(アプリの審査も年々早くなってますしね)。
Screen Time APIを使ったアプリを開発するときは、落とし穴に落っこちないように気をつけてください(そんなことするのはわたしだけかもですが……)。
そして、仕事に勉強に趣味に瞑想に推し活に集中したい方は、ぜひFocus Rainbowを活用して集中モードを手に入れてください。