[英]WatchOS2 WCSession sendMessage doesn't wake iPhone on background
[英]When does WCSession sendMessage fail to wake iOS app in background?
我正在使用WCSession對象通過sendMessage(_:replyHandler:errorHandler:)
將數據從監視應用程序(watchOS 3.3 beta 4)發送回相應的iOS應用程序。 根據Apple提供的文檔 :
在WatchKit擴展程序處於活動狀態且正在運行時從其調用此方法,它將在后台喚醒相應的iOS應用程序並使它可訪問。
但是,我發現如果在調用sendMessage
之前WCSession
對象的isReachable
屬性為false
,則消息將無法發送,並出現以下錯誤: Error Domain=WCErrorDomain Code=7007 "WatchConnectivity session on paired device is not reachable." UserInfo={NSLocalizedDescription=WatchConnectivity session on paired device is not reachable.}
Error Domain=WCErrorDomain Code=7007 "WatchConnectivity session on paired device is not reachable." UserInfo={NSLocalizedDescription=WatchConnectivity session on paired device is not reachable.}
該會話已激活,因此我認為此sendMessage
調用應該可以使iOS應用程序可達,然后發送該應用程序,但這沒有發生。
在什么情況下會發生這種情況?有沒有解決方法?
a)如果將sendMessage(_, replyHandler:_, errorHandler:_)
與非nil應答處理程序配合使用,則ios對方的WCSessionDelegate應該具有session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void)
方法已實現,一旦您在此方法中調用replyHandler(_:)
,消息將被視為已傳遞。 如果未實現此方法,則消息將不會獲得響應,並且您將收到超時錯誤。
b)另外,我注意到在執行session(_ session: WCSession, didXXX: XXX)
任何session(_ session: WCSession, didXXX: XXX)
方法中的代碼時,都不會傳遞消息。 看起來它們都在一個串行后台隊列中執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.