🕳️

【iOS】Screen Time APIを使ったアプリを申請するときの落とし穴

2024/10/30に公開

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は、今集中したいアプリだけを実行することができます。
便利なタイマー機能や、楽しいキャラクターが集中をサポートしてくれるので、ぜひお試しください!

https://apps.apple.com/jp/app/focus-rainbow/id6569223924

宣伝タイム終わりです。

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を活用して集中モードを手に入れてください。

https://apps.apple.com/jp/app/focus-rainbow/id6569223924

Discussion