2016-09-26 2 views
5

Мы работаем с версией Google Firebase 3.x, и перед нами столкнулась странная проблема с Firebase. Мы используем Swift 3.0 и для получения сведений пользователей, мы используем следующий фрагмент кода:Firebase 3x метод не работает в реальном устройстве, но работает на симуляторе 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) 
     }) 
    } 

Этот код никогда не будет вызываться в реальном устройстве и мы не получаем никаких журналов ошибок, но тот же код работает в симуляторе. Это странная проблема и да, я уже проверил аналогичный вопрос: Firebase not worked on real devices (iOS)

Я также пытался отключить BitCode, но это не сработало.

Мы используем устройство iOS 9 с Xcode 8. Любая помощь приветствуется.

+0

1 : Есть ли какой-либо другой выход консоли из SDK Firebase 2: Существуют ли какие-либо правила для вашей базы данных? –

+0

hi @lan no нет никакого выхода на консоль, и ничего не получается из firebase, и это главное, почему мы не можем знать, в чем проблема –

+0

@frank van вы можете помочь –

ответ

1

Я думаю, проблема в Аутентификация. Вы должны Включить проверку подлинности на Firebase но не имеет Аутентифицировать пользователь Так вы не можете получить доступ к базе данных по Firebase.

+0

Нет, это не причина. Я успешно вхожу в систему с той же учетной записью как на симуляторе, так и на iphone, но на реальном устройстве DB недоступен. – Jurasic

0

Вы должны включить анонимный вход в FireBase

Anonymous Login

И согласно FireBase Documentation

Вы должны добавить FIRAuth.auth()?.signInAnonymously() в вашем didFinishLaunchingWithOptions в AppDelegate, чтобы разрешить анонимный вход

+0

Не помогло. Более того, это плохая практика, позволяющая анонимный вход. – Jurasic