您可以在多个 iOS 应用中使用同一个 Facebook 应用编号,例如,在应用的免费版和付费版中使用同一个编号。
在应用的 .plist
文件中定义网址方案后缀参数 FacebookUrlSchemeSuffix
。
注:后缀仅可使用字母字符。
SDK 压缩包包括 FacebookSDKStrings.bundle
,其中包含适用于 SDK 资源且经本地化的字符串。将此捆绑包添加到应用内,并按照 Apple 的说明文档启用 Base Internationalization。
原生分享对话框是 iOS 版 Facebook 应用的一部分,无法在模拟器上运行。请使用物理设备测试原生分享对话框。我们正在寻找能够在模拟器中测试原生分享对话框的方法。
在尝试使用 Facebook SDK 类的每个文件顶层,确保使用正确的导入语句。例如:
#import <FBSDKCoreKit/FBSDKCoreKit.h> #import <FBSDKShareKit/FBSDKShareKit.h> #import <FBSDKLoginKit/FBSDKLoginKit.h>
使用 Objective-C 中的框架时,使用类别扩展现有类的类无法自动加载。
当您尝试调用这些类中已扩展的方法时,将收到 unrecognized selector sent to instance
错误。通过 Xcode 界面构建工具使用的类也不会自动加载,例如,当您通过界面构建工具界面在 .xib 文件中绘制视图,并将其设置为 FBSDKLoginButton
,从而将 FBSDKLoginButton
添加到界面时。因此,当您尝试调用其中的方法时,将收到 unrecognized selector sent to instance
错误。有两种方法可以解决此问题。
您可以通过调用以下内容,在应用委托的 application:didFinishLaunchingWithOptions:
中手动加载类:
[FBSDKLoginButton class];
您也可以添加 -ObjC
链接工具标记。此标记会提示链接工具加载 SDK 中定义 Objective-C 类或类别的每个对象文件。此方法会让我们的所有类都能“开箱即用”,但会增加可执行文件的大小(因为应用程序中会加载额外的对象代码)。
要添加 -ObjC
标记,请点击项目目标并选择“Build Settings”(构建设置)选项卡。在“Linking”(链接)下,双击“Other Linker Flags”(其他链接工具标记),即可添加 -ObjC
。
.plist
中出现配置错误很常见。请确保 .plist
包含针对 FacebookAppID
和 FacebookDisplayName
的行,以及针对 fb{app-id}
的网址类型条目。
如果用户明确点击“登录”对话框中的取消按钮,或用户手动切换回您的应用(称为“隐式取消”),SDK 将报告取消操作。您应确保未在应用委托的生命周期内启动登录流程(例如在 application:openURL:sourceApplication:annotation:
内启动登录),因为这样做类似于隐式取消操作。如果必须这么做,请稍后将登录启动发送到主队列,以便先完成应用委托的生命周期。
分享对话框会根据用户操作通知其委托的 sharer:didCompleteWithResults:
和 sharerDidCancel:
方法。
sharer:didCompleteWithResults:
,当用户成功分享时通知。此外,如果用户向应用授予 publish_actions
权限,results
字典中还会有 postId
键。如果用户登录时未使用 Facebook 登录,在用户点击“Cancel”(取消)时也会调用此方法。 sharerDidCancel:
,当用户点击分享对话框的“X”按钮时通知;或在用户使用 Facebook 登录功能登录并点击“Cancel”(取消)时通知。如果在发出请求时收到意外结果,请开启 FBSDKGraphRequests
调试。在发送任何请求前添加此代码:
[FBSDKSettings enableLoggingBehavior:FBSDKLoggingBehaviorNetworkRequests];
您将能够直接查看来自服务器的请求和响应,对任何问题进行调试。
请考虑查看 FBSDKSettings.h
中定义的其他 FBSDKLoggingBehavior*
常量,寻找可以记录的其他内容。