9

この質問が重複していることに同意します。我慢してください。また、プログラムでBluetoothをオン/オフにすることは不可能であると信じていました。

ただしGKPeerPickerController、Bluetoothがオンになっていない場合に使用すると、ユーザーはブルートゥースをオンにするように求められます。ブルートゥースをオンにするのに十分公平。

仕方がないので、プログラムでBluetoothをオフにすることはできないという信念を持って賭けていました。しかし、このアプリケーションはそれを行うので、私は拒否する選択肢がありませんでした。

GKPeerPickerControllerそれが可能かどうかを確認したいだけです。可能かどうかを確認したいのですが、可能であれば、または他のパブリックAPIを使用してBluetoothをオフにする方法を教えてください。

4

2 に答える 2

2

これがあなたが望む答えではないことは知っていますが、いいえ、Apple 承認の API を使用してプログラムで Bluetooth をオフにすることはできません。

今年、App Store で承認された多くのアプリがこれを行っています。

しかし、彼ら (Apple) が何が起こっているのかを理解すると、リリース後すぐに Apple によって削除され続けます。彼らは確かにプライベート API を使用しています。

開発者は、自分たちが注目されないだろうと考えるほど愚かであるか、Apple がアプリを削除する前に数週間の収益を得ることを望んでいるだけであり、それによって費用を回収し、ある程度の利益が得られる可能性があります。

問題は、アプリがプライベート API を使用しているかどうかを確認する方法がいくつかあることです。開発者が Objective-C フレームワークを通常の方法で使用している場合、それは簡単なチェックです。実際、 Xcodeを使用してアプリのバイナリを iTunes Connect にアップロードすると、 Xcode はこの一部を自動的に実行します。ただし、完全なチェックではありません。Apple では、レビュアーが別のチェックを行いますが、これは Xcode よりも洗練されていると推測できました。

ただし、そのチェックはまだ完全ではありません。怠惰なレビュアーがチェックを実行するのを忘れているだけの問題ではないと私は考えています。Objective-C は、メソッド呼び出しを難読化するためのいくつかの手法を提供します。これらの手法をどのように使用するかによっては、レビュアーをすり抜けてしまう可能性があります。私の経験では、Apple が完全にインストルメント化されたバージョンの iOS ですべてのアプリを実行しているわけではなく、すべての関数呼び出しをログに記録し、難読化によってプライベート API の使用を隠蔽する最善の試みでさえも打ち負かすことができないと信じるあらゆる理由 (ウィンク、ウィンク) があります。技術。

したがって、これで、App Store で見つけた Bluetooth をオフにするアプリについて説明できることはほぼ間違いありません。パブリック GameKit API を使用すると、Bluetooth をオンにすることはできますが、オフにすることはできません。

免責事項: 私は Apple で働いたことがなく、Apple の関係者から情報を提供されたこともありません。しかし、私はレビュー プロセスを通じて非公開 API を取得しました。

于 2012-06-26T03:49:57.783 に答える
-1

以下のコードを試してみてください。それもうまくいくと思います。

Class BluetoothManagerClass = objc_getClass( "BluetoothManager" );
    BluetoothManager *btCont; = [BluetoothManagerClass sharedInstance];

 [btCont setPowered:NO];

プロジェクトに BluetoothManager クラス/フレームワークを追加する必要があります。

ありがとう

于 2012-06-29T13:16:22.563 に答える