Tag: firebase云消息传递

如何在离线时将数据写入Firebase? Swift3

在tableView中,我有一个作业列表。 这些作业可以被多个用户访问,因此我需要使用FIRTransaction。 根据首次写入FirebaseDatabase的结果,我需要在Firebase中写入/不写入其他path。 模式如下: //Claim job by – Cleaner //cleaner tries to claim booking at Users/UID/cus/bookingNumber //if FIRMutableData contains a key 'claimed' or key:value “claimed”:true //update at Users/UID/cus/bookingNumber with key:value //based on response received write or not to another path //write to Cleaners/UID/bookingNumber //key:value 如果客户端应用程序收到来自Firebase服务器的响应之前互联网连接丢失,则不会写入Cleaners/UID/bookingNumber 。 我怎么解决这个问题? @IBAction func claimJob(_ sender: Any) { dbRef.runTransactionBlock({ (_ […]

Firebase – 检查高效的用户名

我开发了一个小function,检查通过注册来宾input的用户名是否可用。 尽pipe如此,该function使用迭代和条件在本地在设备上进行检查。 我想这可能会成为未来的性能瓶颈,当那个列表中有成千上万的用户时(每次成功创build一个新用户时都会更新列表)。 有没有办法在后端更有效地做到这一点? 这里是现在的作用: func checkUsernameTaken(completion: (result: NSError) -> Void) { let errorFound:NSError = NSError(domain: "", code: 0, userInfo: nil) dbReference.child("usernamesTaken").observeEventType(.Value, withBlock: { (snapshot: FIRDataSnapshot!) -> Void in if(snapshot != nil ) { for rest in snapshot.children.allObjects as! [FIRDataSnapshot] { if(rest.value as? String == self.usernameTxtField.text!){ self.isUsernameTaken = true }else{ self.isUsernameTaken = false } } […]

“将此文件复制到您的身份validation服务器” – Firebase自定义身份validation

我的目标是防止多个login用户。我不希望这是客户端,像onDisconnect和onConnect值,但与服务器检查。 我遇到了这个答案: 如何防止同一用户同时loginFirebase? 这告诉我要创build一个自定义的身份validation系统。 当我跟随文档( https://firebase.google.com/docs/auth/ios/custom-auth )时,我需要“将此文件复制到您的validation服务器”(3c)。 我将如何做到这一点? 我只是使用Firebase和我的小iOS应用程序。 我想pipe理这两件事情的一切,没有服务器之间,这可能吗? 或者只能通过另一台服务器上传这个文件? 如果上面的事情是不可能的,我怎么能检查服务器是否真的login? 我正在使用云function,但我没有遇到用户login触发器。请不要回答onDisconnect / onConnect,我想它的服务器端。 如果用户已经login,用户不能login。谢谢:)

Firebase上传文件获取可选string的文件名

上传图片时,我正在实施Firebase友好的聊天示例。 获得可选string的响应。 什么错过了? Optional(FIRStorageMetadata 0x7fc84aced790: { bucket = "abc.appspot.com"; contentEncoding = identity; contentType = "image/jpeg"; downloadTokens = "abctoken"; generation = 1231231; metageneration = 1; name = "Optional(\"S5CKnKUykANdxSvZ3wujpMXHTvg1\")/494509700277/asset.JPG"; timeCreated = "2016-09-02T11:49:00.114Z"; updated = "2016-09-02T11:49:00.114Z"; }) 我的代码: let filePath = "(FIRAuth.auth()!.currentUser!.uid)/(Int(NSDate.time‌​IntervalSinceReferen‌​ceDate() * 1000))/(referenceUrl.lastPathComponent!)" 写在样品中的可选值(?),所以我把它(!)

iOS – Firebasefilter查询

我在Firebase中获得了分数节点: 而在分数节点下我的数据结构如下: { "jjTO29ziQ2SjrH5PFzY7ZMpSgjq1-Kak6FCyGtdy_kcEPd4K" = { jjTO29ziQ2SjrH5PFzY7ZMpSgjq1 = "-Kak6FCyGtdy_kcEPd4K"; score = 5; }; "jjTO29ziQ2SjrH5PFzY7ZMpSgjq1-KbE_pgfUsukOm4uW0bx" = { jjTO29ziQ2SjrH5PFzY7ZMpSgjq1 = "-KbE_pgfUsukOm4uW0bx"; score = 4; }; 问题: 我可以按分数过滤数据吗? 我试过了: FIRDatabase.database().reference().child("scores").queryOrdered(byChild: "score").observeSingleEvent(of: .value, with: { (snapshot) in debugPrint(snapshot.value ?? "nil") }) 但是不能得到结果?

Firebase queryEqual不起作用

我在Firebase中拥有以下层次结构: func invitedEvents() { DataService.ds.REF_EVENTS.queryOrdered(byChild: "eventParticipant").observe(.childAdded, with: { (snap) in print("KEEEY:\(snap.key)") let value = snap.value as? NSDictionary if snap.exists() , value?["eventParticipant"] != nil{ print("eventParticipant:\(value?["eventParticipant"])") var valueArray = value?["eventParticipant"] as! [[String:AnyObject]] for (index, element) in valueArray.enumerated() { print("valueArray\(index): \(element)") //self.selectedContacts.append(element as! Participant) if element["partPhone"] as! String == "00 11 111 1111" { print("KEY:\(snap.key) PHONE:\(element["partPhone"])") self.eventKey = […]

ios上的Firebase在检索数据方面速度很慢

我已经读过,保持Firebase数据平坦并且也只嵌套您打算调用的数据非常重要。 我已经完成了这些工作,但Firebase在检索数据方面仍然太慢。 这是一个例子: 我的数据如下所示: –English —-Ari : 4 —-Philip : 2 —-John : 6 我的代码如下所示: [super viewDidLoad]; [[DataSource sharedInstance].selectedLanguageMutableArray removeAllObjects]; //Retrieving Data From Firebase NSString* selectedLanguagePath = [NSString stringWithFormat:@"languages/%@", [DataSource sharedInstance].languageSelected]; Firebase *languagesRef = [[DataSource sharedInstance].ref childByAppendingPath:selectedLanguagePath]; [[languagesRef queryOrderedByValue] observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) { [self.distanceMutableArray addObject:snapshot.key]; NSLog(@"%@", snapshot.key); NSLog(@"%@", snapshot.value); NSLog(@"%@", self.distanceMutableArray); }]; //Selected Languages Mutable […]

iOS Firebase:将snapshot.value中的所有关键点都弄乱

我从Firebase服务器收到如下所示的快照。 现在我想快照循环所有的键,但我得到了凌乱的位置。 我不知道为什么发生这种情况。 任何帮助将不胜感激 这里是打印日志的代码 NSLog(@"snapshot = %@",snapshot.value); for (NSString *keyPath in snapshot.value) { NSLog(@"keyPath = %@",keyPath); } 这是日志 2016-04-20 11:48:04.177 EarCrush[5241:79090] snapshot = { "-KFlrXzqsSa50GVnJkqk" = { conversationID = "2886-2377"; text = Okteh; time = "20-04-2016 11:12"; }; "-KFlrgrvdR_uj2o1ltaw" = { conversationID = "2886-2377"; text = "How are you determining"; time = "20-04-2016 11:12"; […]

Swift函数在应用程序中工作,但不在重写func viewDidLoad()

在我的iOS应用程序中,我有两个我想在viewDidLoad()中调用的与Firebase相关的函数。 第一个用.queryOrderedByKey()挑选一个随机的孩子, .queryOrderedByKey()孩子的密钥输出为一个string。 第二个使用该键和observeEventType来检索子值并将其存储在字典中。 当我用我的用户界面中的button触发这些function,他们按预期工作。 但是,当我把这两个函数内viewDidLoad(),我得到这个错误: 由于未捕获的exception“InvalidPathValidation”而终止应用程序,原因:'(child :)必须是非空string,不包含'。' '#''$''['或']'' 有问题的代码行在我的AppDelegate.swift中,用红色突出显示: class AppDelegate: UIResponder, UIApplicationDelegate, UITextFieldDelegate 当我注释掉第二个函数并在viewDidLoad中留下第一个函数时,应用程序加载正常,并且随后调用这两个函数(由button操作触发)按预期工作。 我在第一个函数的末尾添加了一行以打印出URLstring,并且没有任何违规字符: https://mydomain.firebaseio.com/myStuff/-KO_iaQNa-bIZpqe5xlg : https://mydomain.firebaseio.com/myStuff/-KO_iaQNa-bIZpqe5xlg 我还在viewDidLoad中的函数之间添加了一行来硬编码string,并且遇到了同样的InvalidPathException问题。 这是我的viewDidLoad()函数: override func viewDidLoad() { super.viewDidLoad() let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.dismissKeyboard)) view.addGestureRecognizer(tap) pickRandomChild() getChildValues() } 这是第一个function: func pickRandomChild () -> String { var movieCount = 0 movieRef.queryOrderedByKey().observeEventType(.Value, withBlock: { (snapshot) in […]

将“全名”字段添加到Firebase电子邮件/密码身份validation?

有没有办法在Firebase上的电子邮件/密码身份validation中添加“全名”字段? (使用Swift)