web-dev-qa-db-ja.com

プログラムでiOSアプリをシングルアプリモードでロックする

注:このアプリをアプリストアに送信したくありません。

私が達成したいこと:

[ロック]と[ロック解除]の2つのボタンがある1つのビューを持つシンプルなアプリが必要です。

ロック-このボタンはデバイスをロックします。このアプリの画面のみが表示され、再起動後も同じ画面が表示されます。ホームボタン、ジェスチャーはシングルアプリモードと同様に無効になります。

ロック解除-これにより、デバイスのロックが解除され、デバイスの通常の動作に切り替わります。

iOS:iOS4.3以降でこれが必要です。

次の解決策を確認しましたが、これらは私の要件と一致しません

  1. 構成プロファイル

    iPhone/iPod/iPadをロックダウンして1つのアプリしか実行できないようにする

    ただし、これは手動です(デバイスを再起動し、シングルアプリモードで実行するアプリを開きます)。私は自分のアプリを通して上記のようにプログラムでそれをやりたいです。

  2. ガイド付きアクセス(iOS 6以降)

    iOS 6でユーザーをシングルアプリモードにプログラムでロックダウンする方法は?

    私はそれをすべてのOSとプログラムで実行してほしい。

これを行う方法はありますか?私はそれをアプリストアに提出したくないので、プライベートAPIはありますか、これを達成するための踏み台のハックはありますか?

前もって感謝します !!

20
Aditya Deshmane

私がiOS7で知っているように、あなたが望むことを正確に行うことを可能にする新機能があります。ただし、これはiOS 7にのみ適用できます(監視対象デバイスにのみ適用できると思います)。

1)autonomousSingleAppModePermittedAppIDsキーを使用して制限構成プロファイルをインストールする必要があります(見てください ここ

これは1つのタイムステップであり、ユーザーはこの構成プロファイルを手動で受け入れる必要があります。

MDMを使用してサイレントインストールする別のオプションがありますが、それはあなたにとってやり過ぎかもしれません。

2)APIを使用する必要があります:

UIAccessibilityRequestGuidedAccessSession (to lock/unlock)

定義されています ここ

3)そしてほとんどの美しさの部分。それはすべて公式に文書化されています。そのため、AppStoreに送信することもできます。

P.S.なぜ4.3または5を気にするのですか?彼らは今では小さな市場シェアを持っています。おそらくiOS6でさえすでに20%未満の市場シェアを持っています。

更新1

潜在的に、クリックとキーを送信するAPIの使用を試みることができます(iPhoneでGSEventを検索-privateapiタグ)。これらのAPIを使用している可能性があります。トリプルホームを実行して、アクセシビリティのオンとオフを切り替えることができます。

これがうまくいけば、iOS6をカバーできるはずだと思います。それ以前にこのAPIとトリプルホームクリックの両方が利用可能であったかどうかはわかりません。

このプライベートAPIはiOS7ではアクセスできなくなったようです。したがって、おそらくこのアイデアは無視してかまいません。

22
Victor Ronin

同様のソリューションを実装する必要があり、機能するようになったため、これは古いものですが、これについて書きたかっただけです。私にとっての手順は次のとおりです。ここでの注意点は、これにはMDMおよびその他の特定の手順が含まれるということです。

私の要件は次のとおりです。さまざまな場所にある各iPadには、一連のアプリがインストールされています。簡単にするために、各部門に独自のアプリがあると仮定します。参加者は自分の部署に関連するアプリを開きます。テストを受けるために、APPはiPadをシングルアプリモードに自動的にロックし、テストの最後に、自動的にロックを解除します。

  1. Apple Configuratorを使用してiPad/iphoneを監視します。
  2. MDM関連ファイルをインストールします(各MDMには独自の一連の手順があり、通常はプロファイルのダウンロードが含まれます)。
  3. すべてのMDMには、シングルAPPモードまたはマルチアプリモードのオプションがあります。 2番目のオプションを選択し、アプリIDをリストに追加します。 (単一のAPPモードはMDMで非常にうまく機能しますが、アプリを常に単一のAPPにロックしたくありませんでした)。
  4. UIAccessibilityRequestGuidedAccessSession apiを使用して、シングルアプリモードからデバイスのロックを解除しました。

http://bobxcode.blogspot.com/2015/12/programmatically-implement-single-app.html

ありがとう、ボブ

3
Bobby

MDM構成には、オプションがあります

  • autonomousSingleAppModePermittedAppIDs

    オプション。監視対象のみ。存在する場合、アレイにリストされているバンドルIDで識別されるアプリが自律的にシングルアプリモードに入ることができます。可用性:iOS7.0以降でのみ使用できます。

    ただし、これには監視対象デバイスモードが必要です。

1
Sat_Rmd