更改Firebase的Bundle ID

25

在这个项目早期,我犯了一个错误,没有在捆绑标识符中添加前缀com。 现在我准备测试飞行,但是发现我的捆绑标识符无效。

目前,我的捆绑标识符是mycompany.myProject,但我想要它是com.mycompany.myproject。 我切换到所需的捆绑标识符进行应用程序归档和上传到应用商店没有问题。

我采取的步骤将应用程序切换到相应的捆绑标识符:

  1. 在Firebase控制台中创建具有正确捆绑标识符的新应用程序。
  2. 下载此新应用程序的Google-Info.plist并将其放置在项目根目录中,然后将其拖入Xcode项目。
  3. 更改Facebook上的捆绑标识符
  4. 在项目设置中更改捆绑标识符

但是,应用程序因为此错误而严重崩溃。

*** Terminating app due to uncaught exception 'InvalidPathValidation', reason: '(child:) Must be a non-empty string and not contain '.' '#' '$' '[' or ']''
当调用 Firebase 方法时,此错误出现的位置。
- (NSString *) getUid {
return [FIRAuth auth].currentUser.uid;
}

该方法返回nil,该方法用于从Firebase检索数据。此方法的nil返回导致InvalidPathValidation错误。

我正在使用Facebook进行身份验证。我认为返回nil的原因可能是应用程序不知道谁已登录,因为我从未提示过要登录(在打开的ViewController上,我的应用程序通过Facebook检查您是否已登录viewWillAppear)。但是这并没有意义,因为我所做的唯一更改是更改包标识符。我已经被困在这个问题上将近一周了。

我特别想知道我需要更改什么以使Firebase接受包标识符的更改。


你删除了旧的GoogleService-Info.plist文件吗?只是想确认一下,里面没有两个文件,以免使用错误的文件。 - Ian Barber
我用更新的GoogleService-Info.plist替换了旧的文件。我的根目录中只有一个文件。 - Kyle Griffith
3个回答

37

解决方案是在同一 Firebase 项目中创建一个新的应用程序。


3
哇,Firebase 真的没有改变 Bundle ID 的方法吗? - Phil_Ken_Sebben
2
实际上并没有Phil。您可以将不同的项目添加到同一个项目中,但在这个项目上由于某种原因无法工作。然而,稍后进行另一个项目时,我能够轻松地将多个应用程序添加到同一个项目中,没有问题。 - Kyle Griffith
1
就像@KyleGriffith在评论中所说的那样,我通过在同一项目中创建一个新应用程序来解决了这个问题。我不得不替换GoogleService文件并更新崩溃报告的信息(创建并下载一个新的崩溃报告JSON文件,并更新构建阶段以引用新文件和新的GoogleService Id)。 - Ryan
只需选择APN方法并生成.p8文件即可。简单多了。 - Grant
2
是的,这真的很糟糕。仍然无法在不创建新应用程序的情况下更新捆绑标识符。 - Zorayr

2

这篇回答在发布时可能是正确的,但对我有帮助的是在目标的签名和功能设置中更改捆绑标识符。然后,我转到GoogleService-Info.plist文件,并更改了BUNDLE_ID的值。接着,我按下Command + B来构建应用程序并运行应用程序。对我来说它完美地工作,我没有收到任何错误。


这并没有提供问题的答案。如果要批评或请求作者澄清,请在他们的帖子下留言。-【来自审查】 - 827
4
@827 我不是在批评或请求澄清。我只是提供了一个答案,因为我发现接受的答案并没有价值去创建一个新的 Firebase 项目来更改 Bundle ID。请仔细阅读。 - Todd
这在某些情况下可能有效,但在许多其他情况下不足以解决问题,例如使用Firebase Auth时。它并没有回答问题。 - Nikolay Suvandzhiev
@NikolaySuvandzhiev 这在所有情况下都有效。事实上,当我尝试修复OAuth的一些问题时,我自己也使用了这种技术。它确实回答了这个问题。 - Todd
4
执行您建议的步骤后,Firebase控制台中的项目设置中是否设置了新的捆绑标识符?对我而言没有。结果就是“使用Apple账号登录”的Firebase身份验证无法工作。而且,必须记住更改GoogleService-Info.plist的方式也不是很好。正确的方法是在同一项目中创建一个新应用程序,就像其他答案中提到的那样。 - Nikolay Suvandzhiev
在这种情况下,您可能正在错误地执行操作。使用Apple和Microsoft OAuth登录是我需要更改包标识的原因,我的解决方案对我起作用了。我能够多次获得相同的结果。 - Todd

2
如果您已登录Firebase CLI并安装了flutterfire cli,您可以在GoogleService-Info.plist文件中更新BUNDLE ID,然后在项目中使用flutterfire configure命令来同步注册到Firebase项目的应用程序。
如果您正确更改了名称,它应该会显示尚未注册新名称的iOS项目,并为您注册它。然后,在Firebase控制台中,您将能够看到旧应用和一个新注册的应用程序,其名称已更改。您可以在那里删除其中一个。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接