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的結尾討論了警報。