【问题标题】:firebase, swift, ios - Failed to fetch default token Error Domain=com.firebase.iid Code=6 "(null)"firebase,swift,ios - 无法获取默认令牌错误域 = com.firebase.iid 代码 = 6“(空)”
【发布时间】:2016-07-31 16:21:56
【问题描述】:

我正在制作一个登录应用程序来跟踪某人是否登录。我使用firebase作为一种方式来做到这一点。如果一个人不在 Firebase 中,他们将无法登录。

问题

我不断收到控制台错误

无法获取默认令牌错误 Domain=com.firebase.iid Code=6 "(null)"

当我模拟应用程序时。当我尝试以Ash Dreyer 登录时,它并没有让我登录。我点击了几次,所以即使我登录了firebase,它也应该让我退出并重新登录。

火力基地

{
  "Ash Dreyer" : {
    "activity" : "None",
    "current_status" : "IN",
    "num_of_logins" : 0,
    "total_hours" : 0,
    "type" : "mentor"
  },
  "Bryton Moeller" : {
    "activity" : "None",
    "current_status" : "OUT",
    "num_of_logins" : 0,
    "total_hours" : 0,
    "type" : "student"
  }
}

应用代理

import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    override init() {
        FIRApp.configure()
    }

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        FIRApp.configure()
        return true
    }
}

LOGINVIEWCONTROLLER

import Firebase
import UIKit

class LoginViewController: UIViewController {
    @IBOutlet weak var activity_label: UILabel!
    @IBOutlet weak var activity_picker: UIPickerView!
    @IBOutlet weak var name_field: UITextField!
    @IBOutlet weak var login_button: UIButton!
    @IBOutlet weak var location_switch: UISwitch!

    var root_ref = FIRDatabase.database().reference()

    // Color scheme
    let grey = UIColor(red: 0.933, green: 0.929, blue: 0.922, alpha: 1.0)
    let dark_orange = UIColor(red: 0.769, green: 0.396, blue:  0.176, alpha: 1.0)
    let dark_blue = UIColor(red: 0.188, green: 0.463, blue: 0.541, alpha: 1.0)
    let light_blue = UIColor(red: 0.412, green: 0.663, blue: 0.686, alpha: 1.0)
    let light_orange = UIColor(red: 0.871, green: 0.612, blue: 0.451, alpha: 1.0)

    var user: Person!

    func update_UI() {
        if let _ = user {
            if user!.current_status == "IN" {
                login_button.setTitleColor(dark_blue, for: UIControlState.normal)
                login_button.setTitle("LOG OUT", for: UIControlState.normal)
            } else {
                login_button.setTitleColor(dark_orange, for: UIControlState.normal)
                login_button.setTitle("LOG IN", for: UIControlState.normal)
            }
        }
    }

    func login(member: inout Person) {
        if member.current_status == "IN" {
            member.current_status = "OUT"
        } else {
            member.current_status = "IN"
        }

        root_ref.child(byAppendingPath: member.key).updateChildValues(["current_status": member.current_status]);

        update_UI()
    }

    func login_new_user(member_name: String) {
        root_ref.observe(FIRDataEventType.value, with: { (snapshot) -> Void in
            for member in snapshot.children {
                if member.key == member_name {
                    self.user = Person(snapshot: member as! FIRDataSnapshot)
                }
            }
        })

        if let _ = user {
            login(member: &user!)
        }
    }

    @IBAction func login_user(_ sender: UIButton) {
        if let _ = user, let name_text = name_field.text, name_text != "" {
            if user.key != name_text {
                login_new_user(member_name: name_text)
            }
        } else if let name_text = name_field.text, name_text != "" {
            login_new_user(member_name: name_text)
        } else if let _ = user {
            login(member: &user!)
        } else {
            print("Please enter text into the text field")
        }
    }

    @IBAction func toggle_location(_ sender: UISwitch) {

    }

    @IBAction func other_login(_ sender: UIButton) {

    }
}

注意事项

  • 当我刚刚在 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 中有 FIRApp.configure() 时,它给了我一个 SIGABRT 错误。
  • 我们正在跟踪一个小组,因此我决定使用名字而不是 UID。
  • 我正在使用 Firebase 3

【问题讨论】:

  • SIGABRT 错误令人担忧。如果您没有适当地配置您的应用程序,那么我不会指望任何工作。你确定你已经完全关注firebase.google.com/docs/ios/setup了吗?

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

只是为了更新,在使用 Xcode 8.2+ 版本的模拟器时,这些错误不应再出现在最新版本的 Firebase 中。模拟器存在一个问题(实际上是几个问题),并且在 InstanceID 中出现了一些过于激进的日志记录。

【讨论】:

  • 我也遇到了 firebase 消息传递的问题。它适用于模拟器,但不适用于 ios 9.3 设备。我不断收到错误= 501“(null)”。有什么帮助吗?
  • 对不起,我不知道这个解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 2016-12-18
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
相关资源
最近更新 更多