2015-11-04 24 views
0

我正在寫一個藍牙LE應用程序。在應用程序中,用戶遷移到設置 - >藍牙外設以獲取範圍內的BLE設備列表。他們通過點擊選擇其中一個設備,然後在成功連接到所選設備後將用戶發送回設置視圖控制器。iOS/Swift:在另一個ViewController的AppDelegate中設置變量(藍牙/ ble)

這裏是我的問題:

1)當涉及到回調,如didDiscoverCharacteristicsForService和didUpdateValueForCharacteristic,只有當他們視圖控制器當前活動的一部分提供這些價值?

2)當我的用戶選擇他們想要連接的設備時,如何在另一個控制器(例如我的PeripheralController)的AppDelegate控制器中設置一個變量?

我需要能夠使用前面提到的兩個回調,無論用戶在應用程序中的哪個位置,但只有在他們選擇了要連接的設備之後。

3)假設用戶在最初選擇要連接的設備後關閉應用程序。這些信息在哪裏保存?它被保存了嗎?

4)我是否必須手動保存它,以便在應用程序再次啓動時,應用程序連接並開始偵聽來自該設備的服務請求?

謝謝。

編輯 我編輯了原始文章並分離了問題,希望他們現在更容易看到和理解。

我是能夠成功地回答問題2但是,我還是很好奇的問題1,我仍然對問題3和4

+0

典型的方法是創建一個管理你的藍牙的對象。該對象可以在'didFinishLaunchingWithOptions'中創建,並作爲屬性存儲在AppDelegate中。例如,該對象可以擁有自己的協議,並根據需要添加視圖控制器作爲其委託或使用NSNotificationCenter「廣播」藍牙事件。 – Paulw11

回答

-1

工作,我不知道第一個問題的答案,但對於第二個只是把一個VAR在應用程序的委託,並嘗試的機會,它就像這樣:

Appdelegate.nameVar = newInput 

我真的不知道這是可能的。

P.S.下一次嘗試排列您的問題,以便閱讀和參考。

0

問:當談到回調,如didDiscoverCharacteristicsForService和didUpdateValueForCharacteristic,只提供這些值時,他們是視圖控制器當前活動的一部分?

答:是,這些調用句柄是僅在委託是部分控制器可用。

問題:當我的用戶選擇他們想要連接的設備時,如何在另一個控制器(例如我的PeripheralController)的AppDelegate控制器內設置一個變量?

答案:答案有多個部分。首先,要設置變量的控制器必須具有對委託的引用。要雨燕做到這一點,我們做了以下內容:

let appDelegate = UIApplication.shared.delegate as! AppDelegate 

接下來,我們指定的的appDelegate的價值,我們希望的價值它有:

self.delegate.var = "Our Value" 

問:比方說,用戶在最初選擇要連接的設備後關閉應用程序。這些信息在哪裏保存?它被保存了嗎?

答案:該信息未被存儲,我知道。

問題:我是否必須手動保存它,以便當應用程序再次啓動時,應用程序連接並開始偵聽來自該設備的服務請求?

答案:是的。

相關問題