2016-09-26 16 views
5

Pracujemy z wersją Google Firebase 3.x i natknęliśmy się na dziwny problem z Firebase. Używamy Swift 3.0 i uzyskiwania dane użytkownika, stosujemy następujący fragment kodu:Metoda Firebase 3x nie działa w prawdziwym urządzeniu, ale działa na symulatorze Swift 3.0

func getUserDetails(uid text:String!, userBlock:@escaping (_ details:AnyObject) -> Void) { 
     //check DB Reference is nil or not. 
     if self.rootDBRef == nil { 
      self.rootDBRef = FIRDatabase.database().reference() 
     } 
     //check input text must not be empty 
     if text.trim().characters.count == 0 { 
      userBlock("" as AnyObject) 
      return 
     } 
     let query = self.rootDBRef.child("users").queryOrdered(byChild: "uid").queryEqual(toValue: text) 
     query.observeSingleEvent(of: .value, with: { (dbSnapshot) in 
      guard let snap: FIRDataSnapshot? = dbSnapshot else { 
       print("No Result Found") 
       return 
      } 
      if snap?.value is NSNull { 
       //block(found: false) 
       userBlock("" as AnyObject) 
       return 
      } 
      let dict = snap?.value as! [String : AnyObject] 
      userBlock(dict as AnyObject) 
     }) 
    } 

że kod nie jest wywoływana w rzeczywistym urządzeniu i nie dostajesz żadnych dzienników błędów, ale ten sam kod działa w symulatorze. Jest to dziwny problem i tak, sprawdziłem już podobne pytanie: Firebase not worked on real devices (iOS)

Próbowałem również wyłączyć BitCode, ale to nie działało.

Używamy urządzenia iOS 9 z Xcode 8. Każda pomoc jest doceniana.

+0

1 : Czy są jakieś inne dane wyjściowe konsoli z zestawów SDK Firebase 2: Czy istnieją jakieś zasady dotyczące twoja baza danych? –

+0

cześć @lan nie, nie ma żadnych danych wyjściowych konsoli i nic, co otrzymujemy z bazy Firebase to najważniejsze rzeczy, dlaczego nie możemy zidentyfikować, w czym jest problem –

+0

@frank van możesz pomóc –

Odpowiedz

1

Myślę, że problem jest na uwierzytelniania. Musisz mieć Włącz uwierzytelnianie na Firebase ale ma nie Uwierzytelnij użytkownik .Tak nie mają dostęp do bazy danych na Firebase.

+0

Nie, to nie jest powód. Z powodzeniem loguję się na tym samym koncie na symulatorze i iPhonie, ale na prawdziwym urządzeniu DB nie jest dostępne. – Jurasic

0

Musisz włączyć anonimowe logowanie w Firebase

Anonymous Login

A według FireBase Documentation

Trzeba dodać FIRAuth.auth()?.signInAnonymously() w swojej didFinishLaunchingWithOptions w AppDelegate aby umożliwić anonimowy zaloguj

+0

Nie pomogłem. Co więcej, złą praktyką jest zezwalanie na anonimowe logowanie. – Jurasic