热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Firebase配置失败-Swift

如何解决《Firebase配置失败-Swift》经验,为你挑选了3个好方法。

在我的应用程序中,我成功使用了Firebase,在AppDelegate中我进行了设置:

// ### Initialize Firebase
FIRApp.configure()

现在我对相关目标进行一些单元测试,当我启动它时,我得到错误:

2017-04-14 14:53:22.351 MyProject[28753]  [Firebase/Core][I-COR000004] App with name __FIRAPP_DEFAULT does not exist.
2017-04-14 14:53:22.354 MyProject[28753]  [Firebase/Messaging][I-IID001000] Firebase is not set up correctly. Sender ID is nil or empty.
2017-04-14 14:53:22.356 MyProject[28753]  [Firebase/Analytics][I-ACS023007] Firebase Analytics v.3800000 started
2017-04-14 14:53:22.356 MyProject[28753]  [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled
2017-04-14 14:53:22.381 MyProject[28753:712475] *** Terminating app due to uncaught exception 'com.firebase.instanceid', reason: 'Could not configure Firebase InstanceID. Google Sender ID must not be nil or empty.'

版本:

Firebase/Core (3.16.0)
Firebase/Messagging (3.16.0)

有什么建议?



1> Michal Klein..:

我刚刚注意到它开始发生在我身上,我的travis版本因Firebase 3.16而失败.我降级到3.7.1,这是我以前在项目中的版本,它再次运行.

我没有时间去研究它,但这是一个快速修复.它可能是Firebase错误,或者它们可能已经改变了某些内容,现在设置也不同了.

编辑:显然回滚到3.15工作得很好.



2> markshiz..:

从Firebase开始,3.16.0Google Firebase似乎没有GoogleService-Info.plist从单元测试版本中获取,即使plist它包含在应用和单元测试目标中.这似乎没有得到解决3.17.0.正如其他人所指出的,降级3.15.0似乎回避了这个问题.

但对于许多人来说,单元测试期间Firebase的初始化可能没有必要,实际上是无意的 - 例如,您可能不希望Firebase报告单元测试崩溃.在这些情况下,您可以FIRApp.configure()通过以下方式轻松添加防护,以便在运行单元测试时不初始化它:

import Foundation

func isUnitTesting() -> Bool {
    return ProcessInfo.processInfo.environment["TEST"] != nil
}

if !isUnitTesting() {
    FIRApp.configure()
}

那么一定要定义环境变量TEST=1 在您的测试方案.



3> Rizwan Satta..:

可能的原因

这可能是由于您的Pod依赖关系的设置方式而发生的.您是否看到来自Xcode的关于两个类中定义的多个实现的警告,例如:

objc[54869]: Class FIRApp is implemented in both /Users/hli/Library/Developer/CoreSimulator/Devices/7766B001-8A5F-43B6-8860-5D36E8DC452C/data/Containers/Bundle/Application/8A18B716-D1D2-4110-83E2-9AE577A034CD/FirebaseDemo.app/FirebaseDemo (0x10d306d30) and /Users/hli/Library/Developer/Xcode/DerivedData/FirebaseDemo-ddfdueufgmkxwzameiwbuhnokgax/Build/Products/Debug-iphonesimulator/FirebaseDemo.app/PlugIns/FirebaseDemoTests.xctest/FirebaseDemoTests (0x11df8cbb0). One of the two will be used. Which one is undefined.

如果是这样,这意味着您可能需要调整pod依赖项配置.由于XCTest目标实际上也引入了主机应用程序的目标,因此可以获得同一对象的多个导入.在这种情况下,FIRApp正在初始化实例ID,但它导致实例ID与另一个 FIRApp进行核对,后者说它没有配置.这解释了为什么它崩溃说它无法找到初始化它的应用程序.

请参阅morganchen12 @在Github上的回答,看一个正确的Podfile示例.

原答案如下:

因此,这可能有两个原因:

    Firebase无法GoogleService-Info.plist在您的单元测试主机应用程序包中找到您,或者

    GoogleService-Info.plist文件要么缺少GCM_SENDER_ID密钥,要么其中包含空值.

我们可以很容易地消除(2) - 你可以检查你的GoogleService-Info.plist文件,看它是否有一个有效的外观GCM_SENDER_ID(它将是一堆数字,如3252652634).

我将研究为什么GoogleService-Info.plist3.15.x与3.16.0及更高版本相比可以找到它.

此外,正如@markshiz所说,您可能实际上不希望Firebase在您的应用程序的单元测试期间启动.您可以FIRApp.configure()通过检查应用程序是否作为单元测试运行来将您的调用置于if语句后面.

为了帮助调试此问题,您是否可以使用环境变量-FIRDebugEnabled集运行测试应用程序?输出结果非常有用.


推荐阅读
  • Thisworkcameoutofthediscussioninhttps://github.com/typesafehub/config/issues/272 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 本文记录了作者对x265开源代码的实现与框架进行学习与探索的过程,包括x265的下载地址与参考资料,以及在Win7 32 bit PC、VS2010平台上的安装与配置步骤。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 学习笔记(34):第三阶段4.2.6:SpringCloud Config配置中心的应用与原理第三阶段4.2.6SpringCloud Config配置中心的应用与原理
    立即学习:https:edu.csdn.netcourseplay29983432482?utm_sourceblogtoedu配置中心得核心逻辑springcloudconfi ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
author-avatar
雅婷婉君323
这个家伙很懒,什么也没留下!