2016-08-03 277 views
0

我與WatchConnectivity有點混淆。Apple Watch應用程序在iOS應用程序啓動時獲取數據

我可以從iOS應用程序發送數據到手錶應用程序。但是,我只在iOS應用程序啓動或活動時發送數據。

我想讓手錶應用程序從iOS應用程序請求數據。手錶應用程序應在啓動時請求信息。

+1

爲什麼不使用iOS的'updateApplicationContext'來觀看watchOS,以及何時啓動watchOS應用程序獲取數據。您可以隨意更改數據,並確保watchOS應用程序能夠獲取最新數據。 –

回答

2

有一個用戶信息和手錶應用程序應該在啓動時請求這些信息。

當用戶瀏覽手錶時,他們爲什麼需要等待數據被請求,接收,然後在應用程序中更新?

而不是設計手錶應用程序來檢索用戶啓動應用程序時的信息,您應該考慮其他方法keep your watch app up to date

  • 對於watchOS 2,還有其他的方法來在後臺傳輸電流的細節,如updateApplicationContextwhich Ahmed mentioned

  • 對於watchOS 3,您還可以使用刷新任務在後臺更新您的手錶應用程序。

這些方法要麼確保信息是已到位,這樣用戶就不用忍受等待的手錶應用程序自行更新。

+0

我使用updateApplicationContext,但首先觀看應用程序應該請求用戶的數據。我在iOS應用程序中發生特定事件(註銷或登錄)時更新應用程序上下文。其實我對結構感到困惑,例如我爲觀察連通性實現了單例類,並且我在appdelegate中創建了一個對象。這種情況是否正確? – TheZipper

+0

評論是不是一個地方問你的代碼無關的問題。如果手機在用戶登錄或註銷時更新應用程序(用戶數據)上下文,爲什麼手錶需要請求數據?無論是用戶登錄,手錶已經擁有該數據,或用戶已註銷,手錶也知道這一點。手錶*仍然需要從手機請求什麼數據?如果您的問題沒有得到解答,您應該對其進行編輯並添加具體的細節(例如解釋手錶特別需要請求的內容,顯示代碼並解釋未按預期方式工作的內容)。 – 2016-08-03 16:52:27

0

您可以使用sendMessage方法link to documentation,它是WCSession class的一部分。該方法採用應答處理器:

用於接收來自對方的響應的應答處理器。如果您不想收到回覆,請指定nil。

因此,您可以通過發送包含iOS應用程序用於發回數據的回覆處理程序的消息來有效地通知iOS應用程序。

0

我遇到了同樣的問題。如果我啓動iOS應用程序,數據只會發送到手錶。 我通過在會話activationDidCompleteWith - 手錶的方法中向iOS應用程序發送帶有回覆處理程序的消息來解決此問題。它不需要發送任何特定的消息或答覆。消息發送到iOS應用程序後,updateApplicationContext觸發併發送數據以進行觀察。

編輯:經過一番研究後,似乎在手錶的第一個數據是「到達」,這就是爲什麼它不能回答時,iOS端的會話不會被激活。

相關問題