Firebase InAppMessaging使用“-[NSBundle initWithURL:]:无URL参数”使我的项目崩溃

时间:2019-02-03 19:01:51

标签: ios firebase cocoapods firebase-in-app-messaging

我最近通过cocoapods将Firebase应用内消息传递添加到了我的项目中。按照文档中的设置过程进行操作后,出现以下错误。如果有帮助,我最近还安装了Admob,但直到安装了应用内消息传递,该错误才显示出来。使我感到困惑的是:几乎没有任何代码可以设置此代码,那么我在哪里会收到nil URL错误?

起初,我不确定是Firebase I.A.M.。导致了问题,但是在删除并重新安装后,问题消失了,然后又出现了。因此,我将介绍如何安装Firebase IAM。我使用此链接作为参考:

https://firebase.google.com/docs/in-app-messaging/get-started?authuser=0

  1. 使用cocoapods 1.4.0将其添加到我的Podfile中

  2. 在我的方案中添加了“ -FIRDebugEnabled”

  3. 获得了我的实例ID,并将其添加到控制台中的广告系列中

  4. 仔细检查了我的方案

错误:

    Terminating app due to uncaught exception
    'NSInvalidArgumentException', reason: ' -[NSBundle initWithURL:]: nil URL argument'
    First throw call stack:
    (0x234b8cec4 0x233d5da40 0x234a93594 0x23554f6a8 0x23554f62c 
    0x10027a1b8 0x10248cdc8 0x10248ee28 0x10027a0f8 0x10027a2c0
    0x10027b518 0x100267038 0x100260888 0x100266e44 0x100267328   
    0x100264bd0 0x10248b824 0x10248cdc8 0x10248fc90 0x10249e1dc
    0x10249ebc8 0x2347a917c 0x2347abcec)
    libc++abi.dylib: terminating with uncaught exception of type NSException

在控制台中,我的实例ID出现,然后是更多信息,然后是错误,因此我不知道可能导致它发生的原因。这是控制台中的一些输出:

     [Firebase/InAppMessaging][I-IAM700004] 1 messages were fetched successfully.
    [Firebase/InAppMessaging][I-IAM270005] No impression records update due to no change after applying the server message list
    [Firebase/InAppMessaging][I-IAM160010] There are analytics event trigger based messages, enable listening
    [Firebase/InAppMessaging][I-IAM160001] There are 0 test messages and 1 regular messages and 3 Firebase analytics events to watch after resetting the message cache
    [Firebase/InAppMessaging][I-IAM240002] Fetch is done. Start message rendering flow.

作为参考,当您搜索错误时,我已经浏览了所有这些链接以及更多信息:

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

之所以失败,是因为缺少InAppMessagingDislayResources.bundle文件。您需要“复制Pod资源创建阶段”脚本来复制和创建该文件。下面将还原该构建阶段脚本。


-在Xcode中运行干净
-删除Pods目录
-删除Podfile.lock文件
-在项目目录中运行“ pod install”
-重新启动Xcode

答案 1 :(得分:0)

我通过将断点放置在资源路径为零的位置来开始调试应用程序。当您达到断点时,该值为nil并显示 proj_name经过优化编译-单步执行可能会产生奇怪的结果。消息。

这使我们无法查看实际变量值,因为in pod项目设置的优化与主要和目标设置不同,因此将其更改为None。

  

窗格>项目设置>构建设置>代码生成

image

现在我可以看到主应用程序包的值/路径,但是proj_name.app仍然缺少InAppMessagingDisplayResources.bundle,这提示复制文件时出错。在仅在安装时运行脚本的复制容器资源部分标志中发现已选中。取消选中它,该应用程序不会因缺少捆绑软件而崩溃。

  

目标设置>构建阶段>复制Pod资源

image