iPhone отключить Bluetooth GKPeerPickerController

Я согласен, что этот вопрос является дубликатом. Пожалуйста, потерпите меня. Я также был среди вас всех, чтобы поверить, что невозможно программно включить / выключить Bluetooth.

Но используя GKPeerPickerController если Bluetooth не включен, пользователю будет предложено включить его. Достаточно справедливо, чтобы включить Bluetooth.

Я держал пари с моей верой, что мы не можем отключить Bluetooth программно, поскольку нет никакого способа. Но это приложение делает это, поэтому у меня не было выбора, чтобы отказаться.

Я просто хочу подтвердить, возможно ли это или нет, и если да, как отключить Bluetooth с помощью GKPeerPickerController или любой другой публичный путь API?

2 ответа

Решение

Я знаю, что это не тот ответ, который вам нужен, но нет, вы не можете программно отключить Bluetooth с помощью одобренных Apple API.

В этом году в App Store было одобрено несколько приложений, которые сделали это.

Но они продолжают удаляться Apple вскоре после релиза, как только они (Apple) понимают, что происходит. Они, конечно, используют частные API.

Либо разработчики достаточно глупы, чтобы думать, что их не заметят, либо они просто надеются получить доход за пару недель до того, как Apple запустит приложение, что может быть достаточно, чтобы окупить их стоимость с некоторой прибылью.

Проблема в том, что есть несколько способов проверить, использует ли приложение частные API. Если разработчики используют фреймворки Objective-C обычным образом, это легко проверить. Фактически, Xcode делает это автоматически, когда вы используете его для загрузки бинарных файлов приложений в iTunes Connect. Но это не полная проверка. Оказавшись в Apple, рецензенты выполняют еще одну проверку, которую я смог вывести, более сложную, чем Xcode.

Однако, эта проверка все еще не идеальна, и я считаю, что это не обязательно ленивый рецензент, просто забывший выполнить проверку. Objective-C дает вам некоторые методы для запутывания вызовов методов. В зависимости от того, как вы используете эти методы, вы можете пройти мимо рецензентов. Исходя из моего опыта, у меня есть все основания (подмигивание, подмигивание) полагать, что Apple не запускает каждое приложение на полностью инструментальной версии iOS, которая может регистрировать все вызовы функций, и не позволяет даже самую лучшую попытку скрыть использование частного API через обфускацию. методы.

Таким образом, я могу в значительной степени гарантировать вам, что это объясняет приложения, которые вы нашли в App Store и которые отключают Bluetooth. Публичные API GameKit позволяют включать, но не выключать Bluetooth.

Отказ от ответственности: я никогда не работал на Apple, и никакие инсайдеры Apple не дали мне информацию. Но я получил частные API через процесс обзора.

Пожалуйста, попробуйте ниже код, и я думаю, что это также будет работать для вас.

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

 [btCont setPowered:NO];

Вам необходимо добавить класс / фреймворк BluetoothManager в ваш проект.

Спасибо

Другие вопросы по тегам