如何在手表应用程序上访问 PFUser.Current()
How to access PFUser.Current() on watch app
我正在使用 Parse,我希望能够访问我手表上的当前用户。有一个关于在主机应用程序和扩展程序之间共享数据的指南,但是函数 enableDataSharing(withApplicationGroupIdentifier:, containingApplication:)
被标记为可用。我想我误解了,Watch Extensions 不被视为 App Extensions。有没有其他方法可以访问手表上的当前用户?
因此,经过大量挖掘和追求多种选择后,我发现 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)
}
in iOS(符合WCSessionDelegate协议的class):
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
}
}
我正在使用 Parse,我希望能够访问我手表上的当前用户。有一个关于在主机应用程序和扩展程序之间共享数据的指南,但是函数 enableDataSharing(withApplicationGroupIdentifier:, containingApplication:)
被标记为可用。我想我误解了,Watch Extensions 不被视为 App Extensions。有没有其他方法可以访问手表上的当前用户?
因此,经过大量挖掘和追求多种选择后,我发现 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)
}
in iOS(符合WCSessionDelegate协议的class):
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
}
}