【问题标题】:Facebook iOS crashFacebook iOS 崩溃
【发布时间】:2013-05-13 20:55:45
【问题描述】:

我正在尝试为 iOS 设置 facebook SDK 3.5。我已经让它工作得很好,但它现在崩溃了。只有当用户通过默认的 iOS facebook 设置(也不是应用商店中的 facebook 应用程序)登录时,才会发生崩溃。当点击 facebook“登录”视图时,应用程序会崩溃。

崩溃是:错误:[NSError fberrorShouldNotifyUser]:无法识别的选择器发送到实例。

我已经做了一些Research 并且有些人建议将 -Objc 放到“其他链接器标志”中。我不知道,但我认为我有类似的东西。我需要其他库的其他选项。以下是我的选择:

谁能告诉我这是否导致了问题?如果没有,有谁知道真正导致崩溃的原因是什么?谢谢!

编辑

这个方法似乎在第一个“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);
}
}

【问题讨论】:

标签: ios objective-c xcode facebook


【解决方案1】:

我遇到了同样的问题。据此

https://developers.facebook.com/docs/ios/errors/#prerequisites

您需要设置-ObjC 标志或使用FBErrorUtility 而不是fberror*

我刚刚添加了 -ObjC 标志,它工作正常。

【讨论】:

  • -ObjC 标志可以通过将所有 Objective-C 对象文件包含在所有引用库中而不必要地膨胀最终二进制文件,无论它们是否在您的应用程序中使用。它应该被视为最后的手段,而不是仅仅使事情正常进行的神奇旗帜。相反,请考虑使用 -force_load 链接器标志来明确包含未正确链接的各个库。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果您已经在使用使用 ARC 的项目,则无需添加此链接器标志。

    确保在您的代码中导入了 NSError+FBError.h 文件,这就是它从中提取该类别的位置。

    从技术上讲,如果您要导入 <FacebookSDK/FacebookSDK.h>,则包含该类别定义。

    此外,如果您的代码找不到该头文件,请确保 FacebookSDK.Framework 包含在目标摘要页面的链接框架和库列表中。

    【讨论】:

    • 感谢您的回复!有些项目正在使用 ARC,有些则不是我为什么要这样做的原因。那这样好吗?我的虽然没有使用ARC。我正在导入 并且当我单击在 finder 中显示时,它会将我带到 FacebookSDK 文件夹,所以我相信这很好。我找不到的唯一文件是 NSError+FbError.h 文件。不确定您是否打算将它们分开,但也无法单独找到它们。还有其他建议吗?谢谢
    • 该文件应该在 ~/Documents/FacebookSDK/Headers 中。在 Xcode 中,如果你扩展 FacebookSDK.framework,文件是否以红色列出?将框架文件拖到项目中时是否复制了它们?
    • 我不记得我是否只是拖动或如何导入它。我道歉。但是当我展开 FacebookSDK.framework 时,我看到一个蓝色的“Header”文件夹,并且没有一个文件是红色的,我认为这意味着它们被正确添加。
    • 如果用户没有通过集成的 iOS 功能登录,一切都运行良好,所以我认为 facebook sdk 没问题?
    • 听起来好像导入正确了。处理登录视图的类包含 FacebookSDK.h 文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2020-11-07
    • 2018-11-02
    • 1970-01-01
    相关资源
    最近更新 更多