如何在watch app上访问PFUser.Current()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在watch app上访问PFUser.Current()相关的知识,希望对你有一定的参考价值。

我正在使用Parse,我希望能够访问我手表上的当前用户。有一个关于在主机应用程序和扩展程序之间共享数据的指南,但功能enableDataSharing(withApplicationGroupIdentifier:, containingApplication:)被标记为可用。我想我误解了并且Watch Extensions不被视为App Extensions。还有另一种方法可以访问Watch上的当前用户吗?

答案

因此,经过大量挖掘和追求多种选择后,我发现Watch Apps与ios Apps完全分开,无法再共享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
    }
}

以上是关于如何在watch app上访问PFUser.Current()的主要内容,如果未能解决你的问题,请参考以下文章

iOS:将图像保存在 App Group 中以在 Apple Watch 上使用

如何在 Apple Watch 上检查监控心率?

为 SwiftUI Apple Watch App 实现基于页面的导航

Ionic app 通知在Moto 360 Watch上显示通知

如何在 XCode 中运行 Watch App

如何在 Apple Watch 中创建构建(.ipa 或 .app)