Итак, после долгих поисков и поиска нескольких вариантов я обнаружил, что приложения Watch полностью отделены от приложений iOS и больше не могут использовать KeyChain Access.Вероятно, поэтому встроенное решение Parse больше не работает.К счастью, Watch Connectivity довольно безопасна, поэтому я думаю, что безопасно отправлять маркер сеанса из iOS и использовать PFUser.become для входа в систему.
В приложении для часов:
guard WCSession.default.isReachable else {
print("Phone is not reachable")
return
}
WCSession.default.sendMessage(["Request": "SessionToken"],
replyHandler: (user, error) in {
guard let token = response["Response"] as? String else { return }
// there is a version of PFUser.become() with a success callback as well
PFUser.become(inBackground: token)
}
в iOS(класс, соответствующий протоколу WCSessionDelegate):
public func session(_ session: WCSession,
didReceiveMessage message: [String: Any],
replyHandler: @escaping ([String: Any]) -> Void) {
// Respond to 'Request' message with sessionToken
if let _ = message["Request"], let sessionToken = PFUser.current()?.sessionToken {
replyHandler(["Response": sessionToken])
} else {
// Either user is not logged in, or this was not a 'Request' message
}
}