【发布时间】: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)来完成。