2

我正在处理两个iOS应用程序,这些应用程序共享相同的钥匙串标记,当用户通过在Web视图中输入其用户名和密码登录到任一应用程序时,它们会收到相同的钥匙串标记。保存在钥匙串中的令牌限时几小时/天 - 当用户使用应用程序并请求/输入正在浏览器中打开的项目时,它们将被刷新。在iOS 11中使用SFAuthenticationSession创建SSO

在iOS 11发布之前,应用程序中的Web视图是SFSafariViewController实例,非常方便,因为它在应用程序之间共享Cookie,并且一旦用户在一个应用程序的浏览器中登录,他会自动登录到其他应用程序,从而实现SSO体验。

在iOS 11中,SFSafariViewController的行为发生了变化,它不再在我的两个应用程序中的不同SFSafariViewController实例之间共享cookie。相反,Apple希望我们使用SFAuthenticationSession来实现相同的行为。

在我的应用程序中,我有一个约50行的表,几乎所有的人都在SFSafariViewController中打开一个不同的URL。所以现在,在iOS 11中,我需要每次都创建一个新的SFAuthenticationSession实例(一旦实例创建后URL就不能更改),并且为了实际显示Web视图,我需要调用start()方法在这个例子中。然而,这个方法只能在同一个实例上调用一次(否则它将返回'false'并且什么都不做),并且每次调用它时,都会弹出“myapp”想要使用“mydomain.com”的通知登录。 因此,这意味着我的用户在表中每行的每个水龙头上都会看到此警报消息。

有没有办法让我的应用只显示一次同意提醒信息,例如:第一次或什么?我希望我的用户在我的两个应用程序中拥有SSO体验,这就是为什么我首先使用SFSafariViewController的原因,但我不希望他们在应用程序中的每个抽头中看到这种烦人的警报。

回答

2

目前没有办法让警报消息只显示一次使用SFAuthenticationSession,我们的应用程序遇到同样的问题。

我和其他许多人一样,向苹果公司提出了一个错误,要求他们只显示一次像你所建议的那样。 this GitHub thread的结尾讨论了警报。