Как получить доступ к PFUser.Current () в приложении для часов - PullRequest
0 голосов
/ 27 сентября 2018

Я использую Parse и хочу получить доступ к текущему пользователю на моих часах.Существует руководство по обмену данными между хост-приложением и расширениями, но функция enableDataSharing(withApplicationGroupIdentifier:, containingApplication:) помечена как доступная.Я думаю, что я неправильно понял, и Watch Extensions не считаются расширениями приложения.Есть ли другой способ доступа к текущему пользователю на часах?

1 Ответ

0 голосов
/ 27 сентября 2018

Итак, после долгих поисков и поиска нескольких вариантов я обнаружил, что приложения 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
    }
}
...