我的問題是:這個共享實體被稱為
GIDSignIn.sharedInstance.restorePreviousSignIn()
但是當我嘗試檢查當前用戶時,它在通話后仍然為零。
GIDSignIn.sharedInstance.currentUser != nil
我認為在檢查用戶是否為零之前,我可能需要適當的延遲。在檢查用戶是否為零之前,如何正確添加延遲或填充用戶。
例如:在檢查 GIDSignIn.sharedInstance.currentUser 之前確認GIDSignIn.sharedInstance.restorePreviousSignIn () 已完成
if(GIDSignIn.sharedInstance.hasPreviousSignIn() && GIDSignIn.sharedInstance.currentUser == nil) {
GIDSignIn.sharedInstance.restorePreviousSignIn()
}else{
print("user has no shared instance. User has not been prev signed in")
}
if (GIDSignIn.sharedInstance.currentUser != nil) {
}else{
print("user is nil")
}
使用 GoogleSignIn SDK GoogleSignIn 框架參考
uj5u.com熱心網友回復:
如果您研究了您鏈接的檔案,您將能夠看到它restorePreviousSiginin是異步的,并且還知道如何使用它。
func restorePreviousSignIn(callback: GIDSignInCallback? = nil)callback
完成時呼叫 的 GIDSignInCallback 塊。該塊將在主佇列上異步呼叫。
其中完成處理程式定義為:
typealias GIDSignInCallback = (GIDGoogleUser?, Error?) -> Void
您應該使用完成處理程式來處理嘗試恢復先前登錄的結果,而不是嘗試在方法中同步執行。就像是
if(GIDSignIn.sharedInstance.hasPreviousSignIn() && GIDSignIn.sharedInstance.currentUser == nil) {
GIDSignIn.sharedInstance.restorePreviousSignIn() {
user, error in
if let user = user {
print(user) // handle the user info
} else {
print(error ?? "unknown error")
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529800.html
