Tag: firebase云消息传递

是否有可能caching身份validation令牌加速与iOS的Firebaselogin?

我正在使用iOS中的FirebaseSimpleLogin和电子邮件/密码身份validation向Firebase进行身份validation。 看来,使[authClient loginWithEmail:username andPassword:password withCompletionBlock:^(NSError *error, FAUser *user) { … }]; 大约需要5-8秒钟才能完成。 有没有办法加快login速度,比如从FAUsercachingauthToken ,并直接在第一次Firebase调用中使用? 更新: 看来,成功loginNSUserDefaults后存储authToken : [[NSUserDefaults standardUserDefaults] setValue:user.authToken forKey:USERDEFAULTS_LOGIN_TOKEN]; [[NSUserDefaults standardUserDefaults] synchronize]; …然后在下次login尝试时使用存储的authToken进行authWithCredential:调用: NSString *authToken = [[NSUserDefaults standardUserDefaults] stringForKey:USERDEFAULTS_LOGIN_TOKEN]; if (authToken) { NSLog(@"Firebase logging in with token…"); [[Mesh root] authWithCredential:authToken withCompletionBlock:^(NSError *error, id data) { … …没有更快。 有没有另一种方法来加快login?

Firebase快照顺序错误

我尝试将我在firebase中存储的post加载到我的tableView中。 我使用.childAdded函数按发布顺序(首先到最后)获取post。 首先它似乎工作,但现在它不再工作,我不知道为什么。 所以我给post添加了一个时间戳,并使用queryOrderedByChild(“timestamp”)。 依然错误的顺序! 这是我的代码: posts.removeAll() let ref = FIRDatabase.database().reference() ref.child("Posts").queryOrderedByChild("timestamp").observeEventType(.ChildAdded, withBlock: { (snapshot:FIRDataSnapshot) in print(snapshot.value!["timestamp"] as! Int) if snapshot.value == nil { return } let post = Post() post.title = snapshot.value!["Title"] as? String post.postType = snapshot.value!["postType"] as? Int post.postDescription = snapshot.value!["Description"] as? String if post.postType == 2 { post.imageAURL = snapshot.value!["imageAURL"] as? String […]

如何从新的Firebase存储下载和查看图像?

我可以将图片上传到Firebase存储,但我无法下载它们。 这是我的代码下载图像: let storage = FIRStorage.storage() let localURL : NSURL! = NSURL(string: "file:///Documents/co.png") // i also tried let localURL : NSURL! = NSURL.fileURLWithPath("file:///Documents/co.png") func download() { let storageRef = storage.referenceForURL("gs://project-5547819591027666607.appspot.com") let imageRef = storageRef.child("co.png") let downloadTask = imageRef.writeToFile(localURL) { (URL, error) -> Void in if (error != nil) { print(error?.localizedDescription) } else { self.imageView.image = […]

使用NotificationCenter Observer处理asynchronous请求

这个问题也有类似的问题,所以我很抱歉,但是没有人能够帮助我。 我正努力将这个asynchronous请求的值从完成处理程序返回给Firebase。 我从Firebase中检索的值是一个数组,它确实存在。 但 以下是我向Firebase发出请求的function: class SearchManager { var searchResults = [String]() var listOfMosaics = [String]() // Retrieves company list from Firebase func getMosaicTitles(completionHandler: @escaping (_ mosaics: [String]) -> ()) { Database.database().reference().child("mosaics").observeSingleEvent(of: .value, with: { (snapshot) in guard let allMosaics = snapshot.value as? [String] else { print("unable to unwrapp datasnapshot") return } completionHandler(allMosaics) }) } […]

烦人的FirebaseloginxCode控制台

我在当前的Xcode项目中通过CocoaPods使用Google SignIn和Admob。 我的pod文件如下所示: pod 'Google/SignIn' pod 'Google-Mobile-Ads-SDK' 当我运行我的项目,我总是从firebase得到恼人的消息:“缺省的Firebase应用程序尚未configuration。添加[FIRAppconfiguration]到您的应用程序初始化” 在该项目中,我可以看到有2个“pbase”和FirebaseCore“是Google的login或admob pod的子版吗? 有没有办法隐藏这个消息,而不configurationfirebase(我不会使用它)?

当有子节点时,Firebase iOS上的.children属性显示为零

几天前我提出了关于从Firebase检索数据的问题 。 问题的答案包括通过使用FEventTypeValue和快照上的.children属性的子节点的for-loop。 它完美的工作,做我需要做的事情。 但是,我试过使用类似的逻辑,它显示.children为零。 这里是数据的样子: –languagesList —-English ——-Ari ———Age: 28 ———Country: United States ———distance: 2 ——-Philip ———Age: 27 ———Country: United States ———distance: 1 —-Spanish ——-Mauricio ———Age: 30 ———Country: Mexico ———distance: 4 这是代码示例(它在viewDidLoad中): NSString* selectedLanguagePath = [NSString stringWithFormat:@"languagesList/%@", [DataSource sharedInstance].languageSelected]; Firebase *languagesRef = [[DataSource sharedInstance].ref childByAppendingPath:selectedLanguagePath]; [[languagesRef queryOrderedByChild:@"distance"] observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) { for ( FDataSnapshot […]

iOS远程通知没有收到,除非从Xcode运行

我正在使用Firebase将无声的远程通知发送到iOS应用程序。 当从Xcode运行应用程序时,无论是在前台还是后台,都能正常工作。 这是快速的,它的工作原理。 但是,如果我停止从Xcode运行,并从我的设备启动应用程序通知不接收,无论该应用程序在前台或后台。 有时我会在15分钟后收到通知,但并非总是如此。 有时如果我打开应用程序,通知就会出现。 我的通知优先级为 10, content_available为 true和数据 。 它没有标题/正文,因为我只是不想触发networking请求,并根据networking请求的结果向用户显示本地通知。 任何想法,为什么这是? 编辑:如果我在有效载荷中包含一个标题/正文,即使没有从Xcode运行,直接传递通知,但它似乎并没有让我在后台运行代码,直到通知被激活( application:didReceiveRemoteNotification:userinfo没有运行)。

Firebase从2.5.1升级到3.2.1

我尝试将Firebase升级到3.2.1但是我遇到了一堆错误。 1-我面对的第一个错误是,之前,我正在使用(authData: FAuthData)但升级后,我开始收到错误: 使用未声明的types的FAuthData 2-对于参考,我正在使用.. let rootRef = Firebase(url:dataURL) rootRef.unauth() 现在我试着改变它 let rootRef = FIRApp(named: dataURL) // it forces me change into that, rootRef.unauth() // and this line throws an error. FIRApp?types的FIRApp? 没有成员unauth 3-同样,如果我使用 let loginRef = FIRApp(named: dataURL) loginRef.authUser( // has no member `authUser` 4-最后,即使我使用了import Firebase ,它也不允许我在AppDelegate中放置FIRApp.configure() 。 在AppDelegate中似乎并不知道FIRApp 将Firebase从2.5.1升级到3.2.1的方法是什么? 有升级它的指南吗? 我错过了什么/错在哪里?

应用重新启动后,Facebook访问令牌为零

我正在使用Firebase身份validation和Facebook在iOS上开发应用程序。 我想用Facebooklogin后使用FacebookgraphicsSDK。 这是第一次正常工作。 但是当我重新启动应用程序时,graphicsAPI不起作用: 必须使用活动访问令牌来查询有关当前用户的信息。 下面的代码是nil: FBSDKAccessToken.current()?.tokenString 但是用户使用Firebase身份validation进行了日志logging: // check if user is logged FIRAuth.auth()?.addStateDidChangeListener({ (auth, user) in if user != nil{ print("User logged") … 有没有办法通过Firebase身份validation获取当前的Facebook访问令牌? 或者我必须坚持以后使用它的访问令牌? 或每次重新login用户(根本不是用户友好的)? 我的解决scheme(但不知道如果最好的方式): 在fblogin时在firebase数据库中保存“访问令牌” 当应用程序重新启动时,从数据库中获取持久的“访问令牌” 检查“访问令牌”是否仍然有效 如果没有,重新login用户并获得一个新的“访问令牌”并保存 更新 我注意到我收到这个消息: 由于模拟器错误,从NSUserDefaults退回到加载访问令牌 所以我在一个真实的设备上检查了我的代码,现在它正在工作,访问令牌通过应用程序重新启动持久。

Firebase查询无法正常执行

我正在尝试执行Firebase查询,但似乎没有正常工作。 我正尝试访问Firebase数据库中的学校名称。 数据库看起来像这样: Schools { Random School Name { schoolLocation: Random Location uid: random UUID } } 如果我使用下面的代码来获取“随机学校名称”的信息,我得到一个null的快照: databaseReference.child("Schools").queryEqualToValue("Random School Name").observeSingleEventOfType(.Value, withBlock: { (snapshot: FIRDataSnapshot) in print(snapshot) }) { (error: NSError) in self.displayError("Search Failed", message: "We couldn't search for that – \(error.code): \(error.localizedDescription)") } 然而,如果我使用这一行代码,查询会给我一个学校的名字,正如我所期望的那样。 我希望能够跟踪使用observeSingleEventOfType是否有错误: let query = databaseReference.child("Schools").queryEqualToValue("Florida Institute of Technology") print(query) 为什么这不起作用?