大约一年前,我将Facebook SDK安装到了我的iOS应用中,完全是出于广告跟踪的目的。我在应用程序中调用的唯一的SDK调用是它们告诉您放入应用程序委托中的三个。没有问题,我的应用程序运行正常(广告跟踪正常)。
最近,Facebook发了一封电子邮件,要求我更新SDK,所以我做到了。现在,我的应用程序在启动后崩溃了,并出现了字符串“无法识别的选择器发送给类”错误。
由于我没有Facebook的源代码,因此我无法调试它,不知道它来自何处,除了将SDK从我的应用程序中完全删除之外,没有其他实际选择,这将使我的营销人员非常高兴心烦意乱。
这是什么问题?有人找到修复程序了吗?
答案 0 :(得分:5)
在“构建设置”中,您是否为“其他链接器标志”设置了-ObjC
?
那为我解决了这个问题。
此外,如果您不使用CocoaPods,则可以look at the podspec,并尝试确保已链接了必需的依赖项。
特别是:
"ios": {
"weak_frameworks": [
"Accounts",
"CoreLocation",
"Social",
"Security",
"QuartzCore",
"CoreGraphics",
"UIKit",
"Foundation",
"AudioToolbox",
"WebKit"
]
},
答案 1 :(得分:0)
另请参见RN FBK SDK iOS issue 472和RN Unity SDK issue 208报告类似的崩溃。
对我来说,添加 -ObjC 链接程序标志不足以防止崩溃。
我还必须包含 force_load 标志和 FBSDKLoginKit 框架的正确路径。
因此在XCode项目的 Build Settings 中的 Other Link Flags 中,我添加了:
-ObjC
-force_load
-${PROJECT_DIR}/FacebookSDK/FBSDKCoreKit.framework/FBSDKCoreKit
请注意,您使用 FBSDKCoreKit 框架的路径可能有所不同。
上面链接的Github问题中有更多有关导致崩溃的原因的详细信息。