porque - no funciona el bluetooth de mi iphone 6
¿Activar programáticamente Bluetooth en el iPhone SDK? (6)
Con iphone 5s
[btCont setEnabled:! currentState]; [btCont setPowered:! currentState];
no corras
He visto muchas preguntas sobre esto, pero nadie da una respuesta real (marcos para importar, código real, etc.). Solo dicen con una API privada y eso hará que su aplicación sea rechazada de la tienda de aplicaciones.
Soy consciente de que el uso de una API privada será rechazada por mi aplicación. Me preguntaba cómo hacerlo para uso personal. (iPhone SDK 3.1.2, iPod touch 2g)
Creo que la solución es hacer una llamada al sistema para launchctl ya que ese es el demonio responsable de iniciar / detener los servicios del sistema.
Debe asegurarse de que los archivos binarios y de encabezado estén AMBOS en las carpetas PrivateFrameworks en:
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/PrivateFrameworks
Esto le permitirá importar PrivateFrameworks como BluetoothManager.framework en su aplicación y no obtener errores. Puedes encontrar cómo conseguir los encabezados en línea. Esto funciona para 3.1.2 + porque estoy escribiendo una aplicación en este momento que funciona perfectamente en mi dispositivo, así como en Sim.
Si vas a probar en el simulador, usa lo siguiente:
#if TARGET_IPHONE_SIMULATOR
//This is where simulator code goes that use private frameworks
#else
/* this works in iOS 4.2.1 */
Class BluetoothManager = objc_getClass("BluetoothManager");
id btCont = [BluetoothManager sharedInstance];
[btCont setPowered:YES];
#endif
Para que funcione la api privada de BluetoothManager, debe hacer lo siguiente: 1. obtener los 4 archivos de encabezado indicados por Harkonian y agregarlos a sus archivos de SDK (agregar los archivos de encabezado a su proyecto) 2. agregar el Marco a su proyecto (agregar los archivos binarios a su proyecto) 3. cree una variable, para trabajar con el servicio BluetoothManager Ejemplo: btManager = [BluetoothManager sharedInstance]; 4. Utilice los métodos de BluetoothManager, puede verlos todos en BluetoothManager.h
Reuní una muestra completa que está disponible aquí: http://www.pocketmagic.net/?p=2827
Espero que esto ayude, Radu
También he estado investigando esto. Debe incluir el marco de bluetoothmanager y el archivo de encabezado en su proyecto. Debería estar en
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/System/Library/PrivateFrameworks/BluetoothManager.framework/
Si el archivo de encabezado no está allí, deberá capturar un archivo .h generado desde la biblioteca e incluirlo en su proyecto. Busqué en Google para encontrarlo; Aquí hay uno aquí:
http://iphone-dev.googlecode.com/svn/branches/include-1.2-sdk/include/BluetoothManager/
Una vez que se agrega a su proyecto, su importación debería verse así si el archivo de encabezado ya estaba en el marco:
#import <BluetoothManager/BluetoothManager.h>
O esto si ha agregado su propio archivo BluetoothManager.h a su proyecto:
#import "BluetoothManager.h
Para cambiar el bluetooth aquí está el código:
BluetoothManager *manager = [BluetoothManager sharedInstance];
[manager setEnabled:![manager enabled]];
He construido una utilidad para hacer esto yo mismo y funciona. Tenga en cuenta que si todo lo que desea hacer es crear una utilidad para alternar el bluetooth y salir, sin ninguna interfaz de usuario, cree un nuevo proyecto en XCode y use la plantilla de aplicación basada en Windows. Agregue el código al método didFinishLaunchingWithOptions y reemplace [window makeKeyAndVisible]
con exit(0)
.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
#if TARGET_IPHONE_SIMULATOR
exit( EXIT_SUCCESS ) ;
#else
/* this works in iOS 4.2.3 */
Class BluetoothManager = objc_getClass( "BluetoothManager" ) ;
id btCont = [BluetoothManager sharedInstance] ;
[self performSelector:@selector(toggle:) withObject:btCont afterDelay:1.0f] ;
#endif
return YES ;
}
#if TARGET_IPHONE_SIMULATOR
#else
- (void)toggle:(id)btCont
{
BOOL currentState = [btCont enabled] ;
[btCont setEnabled:!currentState] ;
[btCont setPowered:!currentState] ;
}
#endif
El método anterior funcionará en iOS 4.2.3.