Facebook iOS 崩溃问题

4
我正在尝试为iOS设置Facebook SDK 3.5。我已经成功地让它工作了,但现在它崩溃了。只有当用户通过默认的iOS Facebook设置(即不是从应用商店下载的Facebook应用程序)登录时,崩溃才会发生。应用程序特别在点击Facebook“登录”视图时崩溃。
崩溃信息是:error: [NSError fberrorShouldNotifyUser]: unrecognized selector sent to instance.
我已经做了一些研究,有些人建议将-Objc放入“其他链接器标志”。我没有确切的方法,但我想我有类似的东西。我需要其他选项来支持其他库。以下是我的选项:

enter image description here

有人能告诉我这是否是问题的原因吗?如果不是,有人知道真正导致崩溃的原因吗?谢谢!

编辑

看起来错误发生在这个方法的第一个“if”中。

- (void)loginView:(FBLoginView *)loginView
  handleError:(NSError *)error {
NSString *alertMessage, *alertTitle;
if (error.fberrorShouldNotifyUser) // CRASH HERE {
// If the SDK has a message for the user, surface it. This conveniently
// handles cases like password change or iOS6 app slider state.
alertTitle = @"Facebook Error";
alertMessage = error.fberrorUserMessage;
} else if (error.fberrorCategory == FBErrorCategoryAuthenticationReopenSession) {
 // It is important to handle session closures since they can happen
// outside of the app. You can inspect the error for more context
// but this sample generically notifies the user.
alertTitle = @"Session Error";
alertMessage = @"Your current session is no longer valid. Please log in again.";
 } else {
 // For simplicity, this sample treats other errors blindly.
alertTitle  = @"Unknown Error";
alertMessage = @"Error. Please try again later.";
NSLog(@"Unexpected error:%@", error);
}
}

请查看此问题:https://dev59.com/tGUo5IYBdhLWcg3w9TTb - Pang
3个回答

2

“-ObjC”标志会在最终二进制文件中包含所有Objective-C对象文件,无论它们是否在您的应用程序中使用,从而不必要地膨胀您的二进制文件。它应该被视为最后的手段,而不是一个神奇的标志,可以让所有东西都正常工作。相反,考虑使用“-force_load”链接器标志来显式地包含未正确链接的单个库。 - devios1

1
如果您已经使用支持ARC的项目,则不需要添加此链接器标志。
确保在您的代码中导入了“NSError+FBError.h”文件,这是它从中提取类别的位置。
从技术上讲,如果您正在导入“”,则包括该类别定义。
另外,如果您的代码找不到该头文件,请确保将“FacebookSDK.Framework”包含在目标摘要页面的链接框架和库列表中。

文件应该在~/Documents/FacebookSDK/Headers目录下。在Xcode中,如果您展开FacebookSDK.framework,文件是否以红色列出?当您将框架文件拖到项目中时,您是否复制了这些文件? - Simon Germain
我记不清是简单地拖动还是如何导入它。我很抱歉。但是当我展开FacebookSDK.framework时,我看到一个蓝色的“Header”文件夹,而且没有任何文件是红色的,这意味着它们被正确添加了。 - Teddy13
如果用户没有通过集成的iOS功能登录,那么一切都正常运行,所以我认为Facebook SDK没问题? - Teddy13
听起来好像正确地导入了。负责登录视图的类是否包括FacebookSDK.h文件? - Simon Germain
看起来我已经找到了精确的崩溃位置。请查看我的更新答案。谢谢! - Teddy13
显示剩余2条评论

0

当设备从Facebook登录返回您的应用程序时,您的应用程序必须在后台运行。我通过打开“快速应用切换”来解决了这个错误。它是目标信息选项卡下的设置,称为“应用程序不在后台运行”。它应该是NO。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接