実験に参加しているテスト ユーザーのグループの間で、実際にどのアプリが使用されているかを調査する必要があります。ランダムなサードパーティ製アプリのそれぞれが統計を行うために使用された時間を知りたい. 可能であれば、TestFlight を通じて iOS アプリを配布する予定です。私のアプリは、アプリの使用統計を収集し、サーバーに送信します。
全体的な目標は、実験に参加している各ユーザーから、インストールされた各アプリの 1 日あたりの合計使用時間を取得することです。
私が持っているもの: 私のアイデアの 1 つは、VoIP バックグラウンド プロファイル (または類似のもの) を使用してバックグラウンドで実行し、定期的に (10 秒ごとなどに) 現在のフォアグラウンド アプリの名前またはバンドル識別子をログに記録するアプリを開発することです (どれか)。
現在実行中のプロセスを取得する方法を見つけました: Can we retrieve the applications currently running in iPhone and iPad
上記の投稿で説明されている方法はkinfo_proc
、プロセス名、優先度、実行時間 (含む) などの情報を持つ他の構造体を含む構造体を提供します。バックグラウンドで費やされた時間)。どのプロセスがフォアグラウンドにあるかを示すフラグを特定できませんでした。また、優先順位は信頼できる指標ではないようです。ここで何か足りない?
上記の方法は、プロセスの現在の実行時間を取得するために使用できますが、各アプリがバックグラウンドで数日 (または数週間) スリープ状態になる可能性があるため、これはアプリが実際にどれだけ使用されたかを示す指標としては不十分です。実行中のユーザーがインストールしたすべてのアプリを 1 時間ごとに強制終了できれば、アプリの使用頻度を示すインジケーターを取得できます。最も使用されるアプリは、ユーザーによってより頻繁にコールド スタートされます。しかし、アプリがランダムに強制終了されるため、テスターにとって不快な体験となります。とにかく、別のプロセスを強制終了する方法はありますか?
もう 1 つのアイデアは、ビュー階層を走査して、タスク バーの一番左にあるアプリのラベルを調べることです。これがどのようにハッキングされる可能性があるかについてのアイデアはありますか?
デバイスのログを分析し、その方法でアプリの使用統計を収集するという別のアイデアがありました。ただし、アプリのバックグラウンドとフォアグラウンドの切り替えアクティビティがシステム コンソールに記録されていないようです。この情報を含む他のログはありますか? または、エネルギー診断ログを有効にすることで取得できますか?
Apple Mobile Device Management (MDM) を使用するようにテスト ユーザーを設定した場合、関心のある情報を収集できますか?
どんなアイデアでも大歓迎です。
いくつかのメモ: 私のテスト ユーザーはジェイルブレイクされたデバイスを持っていませんが、App Store を通じて配布していないため、プライベート API を使用できます。