Sé que esta no es la respuesta que desea, pero no, no puede desactivar Bluetooth programáticamente con las API aprobadas por Apple.
Ha habido una serie de aplicaciones approved on the App Store this year that have done this.
Pero, siguen siendo eliminados por Apple poco después del lanzamiento, una vez que (Apple) se da cuenta de lo que está pasando. Ciertamente están usando API privadas.
Cualquiera de los desarrolladores son tan tontos como para pensar que no los notarán, o simplemente esperan obtener un par de semanas de ingresos antes de que Apple saque la aplicación, lo que podría ser suficiente para pagar su costo, con algunos lucro.
El problema es que hay varias formas de comprobar si una aplicación usa API privadas. Si los desarrolladores están utilizando marcos de Object-C de la manera normal, eso es una verificación fácil. De hecho, Xcode does some of this automatically cuando lo usa para cargar archivos binarios de aplicaciones en iTunes Connect. Pero, no es un control completo. Una vez en Apple, los revisores realizan otro control, que he podido deducir es más sofisticado que lo que hace Xcode.
Sin embargo, ese cheque todavía no es perfecto, y soy de la opinión que no es necesariamente una cuestión de un revisor perezoso simplemente olvidando realizar el cheque. Objective-C le brinda algunas técnicas para las llamadas al método obfuscating. Dependiendo de cómo use estas técnicas, usted podría pasar los revisores. En mi experiencia, tengo todas las razones (guiño, guiño) para creer que Apple no ejecuta todas las aplicaciones en una versión totalmente equipada de iOS, que podría registrar todas las llamadas a funciones, y vencer incluso el mejor intento de ocultar el uso privado de API a través de técnicas de ofuscación.
Por lo tanto, puedo garantizarte que esto explica las aplicaciones que has encontrado en App Store que desactivan Bluetooth. Las API públicas de GameKit te permiten activar Bluetooth, pero no desactivarlo.
Descargo de responsabilidad: Nunca he trabajado para Apple, y nadie de Apple me dio información. Pero, obtuve API privadas a través del proceso de revisión.
Sospecho que la aplicación puede ser retirada pronto.Hubo otra aplicación que hizo algo similar y que solo sobrevivió en la AppStore durante una semana más o menos. –
Tiene que ver con algo a su alrededor que enciende bluetooth con un método que usa bluetooth y probablemente se cuelga con bluetooth para que ios lo mate. (solo una suposición) – Pochi
Gracias por sus dos entradas. De hecho, a partir de las revisiones, podemos ver que la aplicación realmente funciona y ayuda a activarla o desactivarla. Con GKPeerPickerController podemos pedirle al usuario que active el bluetooth, pero la forma de desactivarlo aún es un misterio, por lo que existen dudas. –