2010-12-23 57 views
20

我正在尋找一種簡單的方法來在iOS 4.x設備(iPhone和iPad)上打開和關閉狀態之間切換藍牙和WiFi。有沒有辦法在iOS中以編程方式打開和關閉藍牙和/或WiFi?

我在不同位置和使用場景之間移動時不斷切換這些功能,現在需要多次點擊並訪問設置應用程序。我期待創建一個簡單的應用程序,該應用程序位於Springboard上,我只需點擊它即可關閉無線網絡,反之亦然,然後立即退出。與用於切換藍牙狀態的應用程序類似。

我有開發者SDK,在Xcode和iOS開發中很舒服,所以我很樂意編寫所需的代碼來創建應用程序。我對於哪些API(不管是否是私有的)具有所需的功能來簡單地切換這些設施的狀態感到茫然。

因爲這是一個非常個人的癢癢,我不打算嘗試和銷售應用程序或在App Store上得到它,所以符合應用程序API使用指南是一個沒有問題。我不想做的是越獄這些設備,因爲我想讓核心軟件保持發貨狀態。

任何人都可以通過一些示例代碼或更多關於實現此目標的信息來指向我,因爲我的Google-fu讓我失望,並且如果信息在4.x設備上,我就無法找到它。

+0

我支付一個開發者帳戶,所以如果證書過期了,我只需重新下載並從Xcode重新安裝應用程序?就像我會安裝任何其他進行中的應用程序一樣。這是一個內部的個人應用程序來解決我自己的一次性問題。私有API很好,因爲它會看到的唯一設備就是我的。 – creednmd 2010-12-24 02:00:00

回答

25

感謝馬特·法魯賈(在Twitter上@mattfarrugia)我一直在尋找的答案是:

- (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 

你需要對抗的GameKit框架,以及鏈接,而只是在這段代碼添加到一個新的Xcode項目並在設備上運行。這樣做會創建一個可以打開和關閉藍牙的1輕擊應用程序。

+0

我在我自己的應用程序中嘗試了上面的方法,但它不工作,我使用Xcode3.2.5和iPod 4,iOS 4.3.2 ,,,你能幫我嗎? – Raj 2011-07-07 05:48:10

相關問題