如何与 iOS 扩展共享 Parse 登录会话?

How to share Parse login session with iOS extension?

在为应用编写 iOS 扩展时,是否可以与 iOS 扩展共享应用当前的 Parse 登录会话?

iOS 扩展与 iOS 应用捆绑在一起,但 运行 在单独的容器中。因此,当用户登录应用程序时,扩展无法访问该 Parse 实例。如果扩展程序再次登录,它将为用户创建一个额外的登录会话。

但是,扩展程序可以与应用程序共享一个公共数据容器。所以我想知道是否可以将 PFSession.sessionToken 存储在共享容器中,让扩展基于现有会话与 Parse Server 通信而无需登录?

有两种可能的解决方案:

A) 优雅的方法

启用本地数据共享,在主 iOS 应用程序及其扩展程序之间共享持久数据。

// Enable data sharing in main app.
Parse.enableDataSharingWithApplicationGroupIdentifier("...")

// Enable data sharing in app extensions.
Parse.enableDataSharingWithApplicationGroupIdentifier("...", containingApplicaiton: "...")

Local data sharing in Parse SDKs allows you do share persistent local data between your main application and extensions that it contains, including Keyboard, Share/Today/Photo/Action extensions and Document Providers.

docs 中所述。

B) 手动方法

登录应用程序后,将 Parse 会话令牌 PFUser.current().sessionToken 存储在加密的共享数据容器中。

然后扩展可以访问会话令牌并继续与 PFUser.become(sessionToken:) 的会话。