スクリーンタイムアプリを作るのに必要な資格の申請
はじめに
スクリーンタイムアプリは「アプリケーションやWebサイトの操作を制限する」という、かなり特殊な事をします。そのため、その認可に必須のFamilyControlsというフレームワークでは、アプリをApp Storeに配布するためにAppleへの特別な事前認可申請が必要になります。(配布しない場合の開発用の資格はXcodeのCapabilityから追加するだけです)
この記事ではスクリーンタイムアプリをApp Storeで配布するために必要な工程を記載します。
開発用資格
Xcodeの"Signing & Capabilities"タブ、もしくはApple Developerの"Certificates, Identifiers & Profiles"ページからFamily Controlsフレームワークは追加可能です。ですが、この操作によって追加されたCapabilityは末尾に(Development)とついています。これは開発用機能であり、配布用の資格は別途必要なことを示しています。
このFamily Controlsフレームワークは通常のフレームワークと違い、配布用機能の資格(entitlement)を得るために専用ページから事前申請が必要なフレームワークです。
試しにFamily Controls (Development) の状態でアプリをアーカイブし、オーガナイザで検証を行なってみると下記の2件のエラーがターゲットごとに発生します。
- Provisioning profile failed qualification. Profile doesn't support Family Controls (Development).
- Provisioning profile failed qualification. Profiles doesn't include the com.apple.developer.family-controls entitlement.
つまりは「配布用の資格がありません」というエラーです。この状態ではレビューどころか、パッケージアーカイブすらできません。
配布用資格の申請
アプリを配布可能にするためにはFamily Controls & Personal Device Usage Entitlement Requestのページでターゲットごとに配布用の資格をリクエストする必要があります。 上記のフォームでFamilyControlsフレームワークの利用目的(自己管理・ペアレンタルコントロール・その他)をしっかりと記述してください。
この申請に関する重要な注意点が2点あるので記載します。
⚠️ターゲットごとに配布用の資格を要求
配布用のFamily Controlsの資格(entitlement)は、Family Controlsを必要とするターゲットごとに必要です。
例えば自己管理アプリを作る場合は、最低でもホストとDeviceActivityMonitorの2つのターゲットはFamily Controlsの機能を使います。上述の配布用の資格要求ページでは1回に1つのBundle IDしか記述できないため、この場合2回の権限リクエストが必要です。筆者が開発したAppStopsの場合はテストターゲットを除いて合計5つのターゲット(ホストアプリ1つ、App Extension 4つ)でFamily Controlsの機能が必要だったため、5件の資格リクエストを出しました。
ホストターゲットで資格を得たら自動的にApp Extensionにも適応されるようなことはないので、ここは注意してください。後述のレスポンスまでの待ち時間の問題があり、うっかりすると数ヶ月リリースが遅れることもありえます。
⚠️ 資格要求からレスポンスまでの待ち時間
短くて1週間、長くて1ヶ月ぐらいと考えた方が良いです。 AppStopsでは1回目の申請では1週間、2回目の申請(App Extension申請忘れ対応)では配布用資格が発行されるまで2週間かかりました。知り合いでは3~4週間かかった人もいます。 申請後には「すぐにステータス更新について連絡するね!」と表示があるのですが、Issue Trackerのようなものもないですし、申請の完了確認のメールも来ないので、不安な状態でかなりの長期間待つことになります。
資格要求のすゝめ
Family Controlsを利用する全てのターゲットで配布用資格を得るまでの1~4週間はApp Store Connectにそもそもアップロードできないという状態が続き、アップロードできないのでTest Flightを使ったリリース用のテストも行えないですし、完全にリリース工程がストップします。
AppStopsでは初めての申請で情報がなかったためここまで時間がかかると想定しておらず、トータルで20日程度の配布用資格申請の待ち時間が生まれてしまったので、仕方なくこの期間をアプリの品質改善に充てることにしました。しかし、これは本来喜ばしいことではないので、この記事を読んだ方にはどのApp Extensionが必要になるかが固まった段階で早期に配布用資格の申請を行い、"開発を進めながらの配布資格待ち"を強くお勧めします。 App Store Reviewと違って、資格は一度発行されてしまえば(違反行為による取り消し等がない場合は)ずっと有効です。
具体的なスケジュールとして以下のようなイメージです。
- Family Controls (Development)を使いながら、実現可能な事をリサーチする。
- どんなアプリにするか・どの機能を作るか・どのApp Extensionが必要になるかの方針が固まった。
- 申請ページでAppStoreConnectのIDが必要なので、先にApp Store Connect上にリリース予定のアプリのページを作成する。
- Family Controls & Personal Device Usage Entitlement Requestから配布用資格の申請を行う。
- 申請の結果を待ちながら並行して実装の続きを行う。
- Family Controls (Distribution)を必要なターゲットで受け取れ次第、開発が未完了でもまずはOrganizerからValidateしてApp Store Connectにアップロード可能かどうかテストする。
- 開発が最後まで終わったらApp Store Connectにアーカイブしたアプリをアップロードする。
レビュー期間
スクリーンタイムアプリのレビューは長いと聞いたこともありますが、自分の場合はどのレビューも24時間以内に完了しているため、気にする必要はないと思います。
まとめ
- スクリーンタイムをアプリをリリースするためには、Appleに特別な配布用資格の申請をする必要がある。
- 資格申請はターゲットごとに必要(要注意 ⚠️)
- 申請が受理されるまでには1~4週間かかるので、プロジェクトの早期から申請を行うのがオススメ。
紹介
記事内の資格申請を行なってリリースまでたどり着いたAppStopsというスクリーンタイムアプリはこちらです!よければ動かしながらスクリーンタイム領域でどんなことができるのか試してみてください。
Discussion