【iOS】Screen Time のカテゴリーについて

みなさん、こんにちは。
アドベントカレンダーも書き終わり、年末を感じている id:takkumattsu です。
今日は feather の対応していて調べた Screen Time のカテゴリー について書いていこうと思っています。


画像はiOS 12に作業中断を減らし、画面を見ている時間を管理するための新機能が導入 - Apple (日本)より


最初に

featherの開発をしていてユーザから、『Screen Timeに表示されるカテゴリーがfeatherはその他になっていて不便だ』という声が上がっていたので調査しました。

結論

  • Screen Time のカテゴリーは App Store Connect に設定されるプライマリーカテゴリーが表示される
  • TestFlightからインストールしたユーザはScreen Timeに表示されるカテゴリーがその他になる

詳細は後述します。

Screen Time のカテゴリーについて

公式のドキュメントを調べてみましたが、どこに設定した値が使われるか書かれているドキュメントは見つかりませんでした。

ただ色々調査して動かしてみて分かったのは以下でした。(調査内容は後述)

  • App Store Connect に設定されるプライマリーカテゴリーが表示される image.png (22.5 kB)

調査したこと

Screen Time のカテゴリーがどの設定で変わるか調査しました。

Info.plistのApp Category(効果なし)

アプリの設定なのでinfo.plistとかにその項目があるのではと推測

ググってまず目に止まったのがこのスレッド→Screen Time category

developer.apple.com

解決方法は示されていなかったけどLSApplicationCategoryTypeってのがあると記載されていた。ただMac専用でセットしても変わらなかったと書かれていた。

↓実際変えてみたがScreen Timeのカテゴリーは変わらず

image.png (22.5 kB)

INFOPLIST_KEY_LSApplicationCategoryType (効果なし)

プロジェクトをcategoryで検索するとINFOPLIST_KEY_LSApplicationCategoryType という項目があった。これは前述したinfo.plistとは連動していなくxcodeprojに書き込まれる値みたいです
ちなみにINFOPLIST_KEY_LSApplicationCategoryTypeはググってもほとんど情報が出てきませんでした…

image.png (54.1 kB)

ここをNoneからSosialNetworkingに変えたがScreen Timeのカテゴリーは変わらず

App Storeからインストールし直してみた(効果あり)

そうするとなんとカテゴリーがSNSに変わりました!

心当たりとしては自分のfeatherはTestFlightやビルドしてインストールしていたので、もしかしてTestFlightやビルドして入れたアプリはScreen Timeのカテゴリーが設定されないのではないかという仮説を立ててみてさらに調査しました。

TestFlightからインストール AppStoreからインストール
image.png (55.3 kB) image.png (53.0 kB)

やはりApp Store Connect からインストールした feather はカテゴリーが設定されているけど、TestFlight からインストールした feather はカテゴリーが設定されていませんでした。

TestFlightにもカテゴリーを設定できないのか?

結論としては設定する項目はなさそうでした

meta1.png (141.9 kB) meta2.png (109.2 kB)

その他ハマった点

ハマったポイントですが、Screen Time の値は一度カテゴリーがその他以外になると、(カテゴリーがその他になる)TestFlightからインストールしてもカテゴリーはその他には戻りませんでした。

項目 ①初期インストール ②上書きインストール
①AppStore→②TestFlight image.png (53.0 kB) image.png (53.0 kB)
①TestFlight→②AppStore image.png (55.3 kB) image.png (53.0 kB)

TestFlight→AppStoreの上書きの場合は正しく情報が変わっていますが、AppStore→TestFlightの方は年齢制限指定のみが変わっていました。


あとScreen Timeの値はキャッシュがあるみたいでアプリの削除やiPhoneの再起動でもすぐには項目が消えませんでした。削除して結構な時間を放置したらScreen Timeから表示が消えました。

最後に

ドキュメントがなく実態を把握するのにかなり苦労しました…
同じ問題で困ってる人に届くといいなと思います。


あと調べていて知ったのですが iOS15 から Screen Time の情報を利用できる API が公開されていました!

f:id:takkumattsu:20211213164051p:plain

developer.apple.com

ペアレンタルコントロールをするアプリとかで使えるみたいですね。