2012-02-08 3 views
3

J'ai vu qu'allumer et éteindre le bluetooth par programmation était une chose «api privée» dans les versions précédentes de iOS qui recevrait une application rejetée du magasin apple iTunes.iOS 5: activer et désactiver par programmation 0 bluetooth

Mais dans iOS 5, je suis conscient des choses privées qui ne sont plus privées, comme la modification de la luminosité de l'écran par programme. Faire cela ne sera plus votre application rejetée dans iTunes avec iOS 5, donc je me demande si ces autres choses étaient disponibles publiquement, comme l'adaptateur Bluetooth.

+1

Jetez un oeil à [cette] [1] question [1]: http://stackoverflow.com/questions/1743610/programmatically-turn-on-bluetooth-in-the-iphone- sdk –

+0

J'ai dit ios 5, qui n'existait pas en 2009. – CQM

+2

Je suis désolé frère, j'ai juste essayé d'aider –

Répondre

5

CoreBluetooth est publiquement disponible dans iOS 5. Malheureusement, il ne fonctionne que pour les nouveaux appareils LE (Low Energy) Bluetooth.

Voir CoreBluetooth Documentation

+2

Ce PDF est en blanc. – whatchamacallit

+1

Il n'a pas l'habitude d'être. . Essayez https://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CoreBluetooth_Framework/_index.html – EricS

+0

Cela a fonctionné. J'adore comment Apple bouge. – whatchamacallit

1

Non, bluetooth est toujours pas disponible :(

+0

Cela correspondrait mieux à un commentaire qu'à une réponse –

2

Ce n'est pas publique. Vous aurez rejeté.

+1

"Public" et "Rejeté" sont deux choses différentes. S'il y a une API pour cela, alors c'est public. Apple peut rejeter votre application en fonction de la façon dont vous l'utilisez. – whatchamacallit

+1

@whatchamacallit: Sauf qu'il n'existe aucune API pour le paramètre Préférences système qui contrôle si Bluetooth est activé ou désactivé. Le PDF d'EricS explique comment utiliser Bluetooth LE dans iOS 5, et non comment activer/désactiver Bluetooth. –

2

J'ai réussi à utiliser l'API Private BluetoothManager sur un iPod fonctionnant sous OS 5.1.

Donc je dirais que ça marche toujours.

J'ai fait un échantillon disponible ici: http://www.pocketmagic.net/?p=2827, en bas de l'article. Là, vous pouvez lire plus non seulement sur l'activation de Bluetooth ON, OFF, mais aussi sur la découverte des périphériques Bluetooth à distance, et les énumérant dans l'interface utilisateur.

+2

Je viens de faire une découverte vraiment méchante. Les appels à setPowered et setEnabled doivent être exécutés sur le thread principal. Mettre les appels dans viewDidLoad n'a pas activé ou désactivé bluetooth jusqu'à ce que je l'ai enveloppé dans un envoi à dispatch_get_main_queue – xaxxon

2

J'avais besoin d'activer bluetooth par programme. Ce que j'ai fait était d'utiliser le GKPeerPickerController, cela vous demande d'activer bluetooth si ce n'est déjà fait. Ensuite, sur un appel pour le GKPeerPickerControllerDelegate, je rejette le sélecteur.

Pas parfait, vous verrez le "Recherche de périphériques" pour une courte période, mais cela fonctionne en l'absence d'une autre façon de le faire (pour autant que je sache).

GKPeerPickerController * peerpicker = [[GKPeerPickerController alloc]init]; 
peerpicker.delegate = self; 
peerpicker.connectionTypesMask = GKPeerPickerConnectionTypeNearby; 
[peerpicker show]; 

Lorsque le peerpicker est prêt à chercher il y a une méthode de délégué pour retourner un GKSession pour le sélecteur à utiliser. C'est là que vous le rejetez.

-(GKSession*)peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type 
{ 
    [picker dismiss]; 
    [picker autorelease]; 
    return nil; 
} 

Et votre application ne sera pas rejetée.

Questions connexes