共享

2017-09-02 100 views
2

我想了解如何開發爲Apple關注watchapps watchapp及其併發症之間的數據模型,有一點似乎有點困難,我說:應該如何的數據要在watchapp和併發症控制器之間共享?共享

大多數的例子,我在網上看到遵循以下順序:

1 - 對ExtensionDelegate下載數據,並使用它的InterfaceController;

2 - 讓ComplicationController從ExtensionDelegate

3獲取數據 - 添加一個後臺任務的ExtensionDelegate,使其下載將由雙方InterfaceController和ComplicationController使用,更新都更新的數據。

所以我的數據是在一個ExtensionDelegate收藏。我在想:

1 - 啓動應用程序時,誰應該首先得到我ExtensionController下載數據?我的ComplicationController或我的InterfaceController?我問這個問題是因爲在xcode上有一個模擬器,所以有時我不知道在啓動應用程序時首先調用哪一個。應用程序只能在用戶打開應用程序後纔開始它的生命週期,從而強制首次加載數據,還是在安裝應用程序後啓動?還是應該在ExtensionDelegate添加一個標誌,標誌,如果沒有下載的數據,有被下載的數據,有可用的數據(即,收藏不爲空),因此,無論是ComplicationController或InterfaceController可以觸發第一數據下載?

2 - 雖然我的後臺下載任務的作品,我覺得過了幾個小時,我的應用程序有打開的時候,就好像是以前從未打開,從而引發一個新的數據下載到被重新加載。其上的數據與已下載並由ComplicationController顯示的數據不同。解決這個問題的好策略是什麼?任何我應該檢查的指針?

回答

0

我不知道如果我理解你的問題的權利。無論如何,我通過以下方式將數據從iPhone傳輸到手錶:

假設首先安裝了iPhone應用程序和手錶擴展程序,iPhone應用程序尚未啓動,但手錶擴展程序正在運行背景,以便它可以在iPhone應用程序運行後立即與iPhone通信。
進一步假設,手錶顯示的是一款帶有複雜功能的手錶。

當iPhone應用程序啓動時,它首先發送併發症數據使用transferCurrentComplicationUserInfo(_:)手錶。所以,錶盤顯示了複雜的數據。
隨後,iPhone發送使用sendMessage(_:replyHandler:errorHandler:)的消息。此消息告訴手錶分機iPhone即將發送數據。由於發送數據可能需要很長時間,因此初始消息用於顯示提示從手錶上的iPhone加載數據。
隨後我使用updateApplicationContext(_:)發送數據。

的第二個情況是,iPhone應用程序正在運行,但手錶擴展還沒有。
現在,只要手錶擴展程序啓動,InterfaceController使用sendMessage(_:replyHandler:errorHandler:)立即發送消息到iPhone,它需要數據。當接收到該消息時,執行與上述相同的序列:複製數據被髮送,消息被髮送,數據傳送將很快開始,並且數據傳送被啓動。

這工作沒有問題。

關於您的問題:
在我的情況下,InterfaceController一旦被激活就會啓動傳輸。
但是,當手表擴展程序安裝但尚未啓動時,我的手錶表面已經顯示了我的(默認)複雜數據。這意味着ComplicationController實際上正在運行,即使手錶擴展程序和iPhone應用程序都沒有運行。因此可能以這種方式開始初始數據傳輸。
我沒有你在第二個問題中提到的問題,所以我什麼都不能說。

+0

感謝您的回答。但是,我的問題(和我的問題)不涉及從iPhone傳輸數據。我的問題主要與手錶從互聯網獲取數據有關,而不是存儲在iPhone上的數據。 – francisaugusto

+0

對不起。這對我來說並不清楚。 –