尝试初始化 iOS AppsFlyer SDK 时出现 SIGABRT 错误

Posted

技术标签:

【中文标题】尝试初始化 iOS AppsFlyer SDK 时出现 SIGABRT 错误【英文标题】:SIGABRT Error When Trying to Initialization iOS AppsFlyer SDK 【发布时间】:2018-12-31 20:55:46 【问题描述】:

我正在尝试运行 AppsFlyer SDK 的初始化,但在启动应用程序时出现 Thread 1: signal SIGABRT 错误。我在这里使用 AppsFlyer 的指南:https://support.appsflyer.com/hc/en-us/articles/207032066-AppsFlyer-SDK-Integration-ios#3-sdk-initialization。

我在 Xcode 10 的 swift ios 应用程序上使用它。我在指南中使用了 cocopods 选项。我尝试使用指南提供的确切代码,但这不起作用。然后我尝试遵循 Xcode 建议的更改。这给了我一个警告,然后应用程序在启动时崩溃了。

指南说要使用的代码:

AppsFlyerTracker.shared().appsFlyerDevKey = "<your-appsflyer-dev-key>";
AppsFlyerTracker.shared().appleAppID = "123456789"
AppsFlyerTracker.shared().delegate = self

Xcode 建议修复代码:(错误:“无法将类型 'AppDelegate' 的值分配给类型 'AppsFlyerTrackerDelegate?'”)

AppsFlyerTracker.shared().appsFlyerDevKey = "xxxxxxxxx";
AppsFlyerTracker.shared().appleAppID = "xxxxxxxx"
AppsFlyerTracker.shared().delegate = self as! AppsFlyerTrackerDelegate

启动后出错:线程 1:信号 SIGABRT

我正在尝试初始化 SDK。

我也在使用 AdMob/Firebase,而且也在使用 cocopods。它按预期工作。

【问题讨论】:

不是强制转换您的AppDelegate 类,而是尝试实现AppsFlyerTrackerDelegate 协议?如果没有完整的崩溃日志,我的期望是该框架试图调用它的委托协议期望定义的函数之一,但是您为其提供了一个不符合要求的对象。 @JamieEdge 如果我尝试使用AppsFlyerTrackerDelegate 协议,我会收到Type 'AppsFlyerTrackerDelegate' has no member 'shared' 的错误。如果我注释掉这一行,那么整个应用程序将按预期工作。 听起来您正在删除UIApplicationDelegate 一致性,而不是除此之外实现框架的委托协议。为AppDelegate 类添加扩展并在其中实现所需的类型。 @JamieEdge 对不起,我不明白你的意思。 必须符合UIApplicationDelegate 协议。您不能删除此协议一致性,否则您将收到您提到的编译错误。为了使该类适合作为这个特定框架的委托,除了现有协议之外,您需要添加对它所需的协议的一致性,而不是替换它。这可以使用extension(推荐)或逗号分隔(class AppDelegate: NSObject, UIApplicationDelegate, AppsFlyerTrackerDelegate)来完成。 【参考方案1】:

我能够通过将AppsFlyerTracker.shared().delegate = self 更改为AppsFlyerTracker.shared()?.delegate = self as? AppsFlyerTrackerDelegate 来修复错误。

【讨论】:

以上是关于尝试初始化 iOS AppsFlyer SDK 时出现 SIGABRT 错误的主要内容,如果未能解决你的问题,请参考以下文章

AppsFlyer 集成在 iOS 中不起作用?

iOS AppsFlyer的使用注意事项

我可以在 ios 应用程序中使用 2 个不同的 Appsflyer 帐户吗?

Facebook 应用安装广告 - sdk 中的数据

AppsFlyer:有没有办法找到用户是不是重新安装应用程序

如何使用 Swift 使用此代码片段为 iOS 应用程序初始化 SDK?