13

「設定アプリをプログラムで開く方法」という質問がたくさんあることは知っています。答えは「BIGNO」です。AppleはiOS5.0以降の他のアプリからの設定を開くことをサポートしていないことを知っています。

ただし、設定を開くことができるMapMyFitnessのようなアプリがいくつかあり、それらはApp Storeで入手でき、Appleによって承認されています。Bluetoothがオフになっている場合、MapMyFitnessはBluetooth設定を開きます。私はこれをiOS6とiOS5.1でチェックしました。

私の情報によると、合法的に設定を開く方法がないため、これらのアプリがどのようにして設定を合法的に開き、Appleのセキュリティをバイパスできるのか知りたいですか?

4

2 に答える 2

18

そうですね、iOS 5.0には、prefs://URLスキームがあります。

iOS 5.1から、それは削除されました。プライベートAPIと難読化を使用して、バイナリの静的分析をバイパスすることは引き続き可能です。例:

void (*openApp)(CFStringRef, Boolean);
void *hndl = dlopen("/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices");
openApp = dlsym(hndl, "SBSLaunchApplicationWithIdentifier");
openApp(CFSTR("com.apple.Preferences"), FALSE);

文字列をいじる(分割して連結するなど)ことで、最終的にAppStoreにたどり着くことができます。ただし、それはまだ許可されていません。

于 2013-01-29T16:28:19.313 に答える
13

アプリは設定アプリケーションを開いて特定の画面に表示することはできません。MapMyFitnessのようなアプリが設定を開く理由は、BluetoothLowEnergyを使用する許可を求めているためです。許可の要求は、最初の使用時にCBCentralManagerによって管理されます。

ここに画像の説明を入力してください

これは、Bluetoothがオンかオフかを知るクラスでもあります。ブルートゥースをオンにする設定に入るオプションを備えたアラートが自動的に表示されます。

位置情報サービスを使用すると、同様のポップアップが表示されます。

これらのポップアップは、システムフレームワークによって自動的に表示されます。メッセージはpurpose、位置情報サービスのプロパティを使用してカスタマイズできます。これは、Bluetoothの場合は不可能です。

これにはプライベートAPIが使用されていないため、アプリが拒否される理由はありません。

于 2013-01-29T16:31:56.927 に答える