2010-12-23 6 views
20

Ich bin auf der Suche nach einer einfachen Möglichkeit, um sowohl Bluetooth als auch Wifi ein- und auszuschalten auf iOS 4.x-Geräten (iPhone und iPad).Gibt es eine Möglichkeit, Bluetooth und/oder Wifi programmgesteuert in iOS ein- und auszuschalten?

Ich schalte diese Funktionen ständig um, während ich zwischen verschiedenen Orten und Nutzungsszenarien umher wechsle. Momentan sind mehrere Taps und Besuche in der Einstellungs-App erforderlich. Ich suche eine einfache App zu erstellen, die auf Springboard lebt, die ich einfach antippen kann und es schaltet das WLAN aus, wenn es an ist, und umgekehrt, dann sofort aufhören. Ähnlich mit einer App zum Umschalten des Bluetooth-Status.

Ich habe das Entwickler-SDK, und bin in Xcode und mit iOS-Entwicklung bequem, so freue ich mich, den erforderlichen Code zu schreiben, um die App zu erstellen. Ich bin nur ratlos, welche API, privat oder nicht, die erforderliche Funktionalität hat, um einfach den Zustand dieser Einrichtungen umzuschalten.

Da dies eine sehr persönliche Juckreiz ist, habe ich keine Absicht, zu versuchen, die App zu verkaufen oder auf dem App-Store, so konform mit App-Richtlinien zur API-Nutzung ist kein Problem. Was ich nicht tun möchte, ist Jailbreak die Geräte, wie ich die Kernsoftware wie geliefert halten will.

Kann mir jemand auf einige Beispiel-Code oder mehr Informationen auf das Erreichen dieses Ziels, wie meine Google-Fu lässt mich im Stich, und wenn die Informationen gibt es für 4.x Geräte Ich kann es einfach nicht finden.

+0

Ich bezahle für ein Entwicklerkonto, also wenn das Zertifikat abläuft, ich es einfach neu herunterladen und die App von Xcode neu installieren? Genau wie ich irgendeine andere Work-in-Progress-App installieren würde. Dies ist für eine interne, persönliche App, um mein eigenes, einmaliges Problem zu lösen. Private APIs sind in Ordnung, da die einzigen Geräte, die sie sehen, meine sind. – creednmd

Antwort

25

Dank Matt Farrugia (@mattfarrugia auf Twitter) die Antwort, die ich suchte war:

- (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:0.1f] ; 
#endif 
    return YES ; 
} 

#if TARGET_IPHONE_SIMULATOR 
#else 
- (void)toggle:(id)btCont 
{ 
    BOOL currentState = [btCont enabled] ; 
    [btCont setEnabled:!currentState] ; 
    [btCont setPowered:!currentState] ; 
    exit(EXIT_SUCCESS) ; 
} 
#endif 

Sie müssen auch gegen den GameKit Rahmen verbinden, sondern einfach in diesem Code zu einem neuen Xcode hinzufügen projizieren und auf dem Gerät ausführen. Dadurch wird eine 1-Tap-App erstellt, mit der Bluetooth ein- und ausgeschaltet wird.

+0

Ich habe die obige Methode in meiner eigenen App versucht, aber es funktioniert nicht, ich benutze Xcode3.2.5 und iPod 4, iOS 4.3.2 ,,, können Sie mir bitte helfen? – Raj

+1

Entschuldigung ich gt die Lösungen..by geben mehr Verzögerung funktioniert gut für mich..thank Sie creednmd – Raj

+0

@creednmd wissen Sie über die Auswirkungen von SetEnabled und setPowered Eigenschaften? Welche dieser Einstellungen erreicht was? – marcus