2016-06-06 46 views
7

Zaten oturum açmışsa ve sadece ana görünüme gidiyorsa ancak kod iki kez çalışıyorsa otomatik olarak oturum açmak istiyorum ve sadece gösterme görünümü yerine aktarmayı görebilirsiniz. Nasıl düzeltebilirim?Swift: Firebase ile otomatik giriş yap Kullanıcı

AppDelegate.swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch.slideMenuController 
    FIRApp.configure() 
    FIRAuth.auth()?.addAuthStateDidChangeListener { 
     auth, user in 
     if user != nil { 
      // User is signed in. 
      print("Automatic Sign In: \(user?.email)") 

      let storyboard = UIStoryboard(name: "Main", bundle: nil) 
      let initialViewController = storyboard.instantiateViewControllerWithIdentifier("EmployeeRevealViewController") 
      self.window!.rootViewController = initialViewController 

     } else { 
      // No user is signed in. 
     } 
    } 

    return true 
} 

Log

2016-06-06 01:00:55.585 Untitled[13009:6258910] Configuring the default app. 
2016-06-06 01:00:55.657 Untitled[13009:] <FIRAnalytics/INFO> Firebase Analytics v.3200000 started 
2016-06-06 01:00:55.666 Untitled[13009:] <FIRAnalytics/INFO> To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled 
2016-06-06 01:00:55.714 Untitled[13009:6258910] Firebase Crash Reporting: Successfully enabled 
2016-06-06 01:00:55.739: <FIRInstanceID/WARNING> FIRInstanceID AppDelegate proxy enabled, will swizzle app delegate remote notification handlers. To disable add "FirebaseAppDelegateProxyEnabled" to your Info.plist and set it to NO 
2016-06-06 01:00:55.739: <FIRInstanceID/WARNING> Failed to fetch APNS token Error Domain=com.firebase.iid Code=1001 "(null)" 
2016-06-06 01:00:55.760: <FIRMessaging/INFO> FIRMessaging library version 1.1.0 
2016-06-06 01:00:55.781: <FIRMessaging/WARNING> FIRMessaging AppDelegate proxy enabled, will swizzle app delegate remote notification receiver handlers. Add "FirebaseAppDelegateProxyEnabled" to your Info.plist and set it to NO 
2016-06-06 01:00:55.788 Untitled[13009:] <FIRAnalytics/INFO> Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist 
Automatic Sign In: Optional("[email protected]") 
2016-06-06 01:00:56.759: <FIRInstanceID/WARNING> APNS Environment in profile: development 
Automatic Sign In: Optional("[email protected]") 
2016-06-06 01:00:57.811 Untitled[13009:] <FIRAnalytics/INFO> Firebase Analytics enabled 
+0

Yetki verisi verilerini kaydettiniz mi? – Shubhank

+0

bu dokümanı firebase'den takip edin: https://firebase.google.com/docs/auth/ios/google-signin#2_implement_google_sign-in –

+0

Bu dokümanı takip ettim. Çalışır, ancak kod günlüğün sonunda görebileceğiniz gibi iki kez çalışır. Ve sonra ana ekrandan ana ekrana geçiş var –

cevap

6

Dene: güncellenmiş belgeler gelince

if let alreadySignedIn = FIRAuth.auth()?.currentUser { 
    // segue to main view controller 
} else { 
    // sign in 
} 
+2

Ve kodu 'viewDidLoad() 'yerine' viewDidAppear 'yerine koymayı unutmayın. Bu hatayı yaptım ve çağrılmasa bile sekizin neden geçmediğini anlayamadım. – oey

+0

Kullanıcı uygulamayı kapatıp tekrar açtığında ne olur? –

2

, bu Firebase belgelere dayanarak bunu yapmak için recommened yoludur ve benim için çalıştı:

if Auth.auth().currentUser != nil { 
    // User is signed in. 
    // ... 
} else { 
    // No user is signed in. 
    // ... 
} 

Firebase en noticably onların adlandırma kuralı ama değişti:

FIRAuth En iyi sonuçlar için de

Auth olarak değiştirildi var, böyle viewDidAppear() içime koydu:

Firebase 4 ve hızlı 4 kişilik tanımlayıcı olmadan
0

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(true) 
    if Auth.auth().currentUser != nil { 
     performSegue(withIdentifier: "yourIdentifier", sender: self) 
    } 
} 
, bu ... benim için iyi çalıştı

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(true) 
    if Auth.auth().currentUser != nil { 
     let newViewController: YourViewController = YourViewController() 
     self.present(newViewController, animated: true, completion: nil) 
    } 
} 
İlgili konular