2014-09-27 75 views
1

我正在開發一款可與iOS應用程序配合使用並使用CoreBluetooth的藍牙低功耗(4.0)設備。我已經成功地創建了這個應用程序,它與設備交互很好。但是,現在iOS 8允許開發人員實現自定義小部件,我想在UINotification「今日」中心中顯示「斷開連接」按鈕。通過iOS 8斷開藍牙設備Widget

問題是這樣的:我相信我已經讀過,小部件和應用程序之間沒有任何溝通的方式,表示小部件有它自己的容器。這也意味着我無法訪問應用程序中的藍牙對象,該應用程序從小部件本身持有對我的藍牙設備的引用,以斷開對象的連接。我能夠在widget類中創建一個新的藍牙對象,並從iOS系統中檢索藍牙連接,但即使我在此時斷開了BT設備,它仍然會在應用程序中持有引用。

任何人都可以提供任何見解,想知道我想做什麼是可能的嗎?

+0

小部件不僅擁有自己的容器,它也是一個完全獨立的過程。 – 2014-09-27 01:47:52

+0

另一種選擇是通過BLE連接與應用進行通信。 – 2016-03-02 15:21:04

回答

1

您可以使用shared NSUserDefaults database在您的應用和擴展程序之間傳輸數據。您可能也有興趣NSUserDefaults key value observing

應用擴展程序旨在獨立於其包含的應用程序,我不確定它們是否適用於此目的。

然而,另一種選擇是實行custom URL scheme您包含應用程序,然後使用openURL打開你的應用程序包含並執行斷開動作(或其他任何你想你的擴展做的)。

+0

感謝您的建議,我非常感謝。看起來您的自定義網址方案可能是一種可行的方式。不過,我對你對NSUserDefaults關鍵值觀察的建議很感興趣。由於小部件和應用程序本質上是相互獨立的,因此這將如何工作?應用程序是否仍然可以通過這種方式得到通知?謝謝! – Teddy13 2014-09-27 02:10:35

+1

@ Teddy13我真的不確定鍵值觀察是否適用於藍牙背景模式。但是你可以在你的'CoreBluetooth'委託方法實現中使用'NSUserDefaults'來至少檢查用戶是否通過這個小部件「請求斷開連接」。 – 2014-09-27 02:19:24

+1

@ Teddy13但是你說的對 - 自定義URL方案可能是最好的選擇。在擴展和包含應用程序之間進行任何基於事件的通信並不是一種好方法。 – 2014-09-27 02:20:54