2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

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があります。

Target.png

ShieldActionとShieldConfigurationは、以下のスクリーンショットのようなスクリーンタイムのシールド画面の実装を行うものです。

シールド画面.jpeg

Family Controlsの申請をするときに、本体のFocusRainbowターゲットだけ申請すればいいだろうと思って申請しました。
無事に許可が降りたので、Additional CapabilitiesでFamily Controls(Distribution)をチェックしてProvisioning Profileを作成してからArchiveしてValidateしたら……

Validate Error.png

なんとエラーになってしまいました!

そして落とし穴に落っこちたことに気がついたのです。
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を活用して集中モードを手に入れてください。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?