尝试初始化 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 错误的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 ios 应用程序中使用 2 个不同的 Appsflyer 帐户吗?