Swift 中 Facebook SDK (Beta)
针对 Swift 定制的体验,以便将您的应用程序与 Facebook 集成。包括
- Facebook 登录 - 使用用户 Facebook 凭据进行认证。
- 分享和发送对话框 - 启用从您的应用程序到 Facebook 的内容共享。
- 应用事件 - 了解您的受众和您的应用程序的性能。
- 图形 API - 直接读取和写入 Facebook 社交图谱。
重要
注意:此 SDK 是围绕 ObjC SDK 的包装。该项目使用 Carthage 内部用于管理以 "FBSDK" 前缀命名的库的依赖关系。它的目的是在原始项目周围提供额外的类型安全层,同时也提供对现代 Swift 和 iOS 体系的支持。有关此项目现代化的策略,请参阅我们的 路线图。
安装
CocoaPods
请确保您正在运行最新版本的 CocoaPods,可运行以下命令
gem install cocoapods
# (or if the above fails)
sudo gem install cocoapods注意:我们支持 CocoaPods 1.0.1 或更高版本。
通过运行以下命令来更新您的本地规格仓库
pod repo update注意:此步骤是非必需的,如果您最近已更新规格仓库。
将以下行添加到您的 Podfile 文件中
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'运行 pod install 并设置完成!
如果您不需要 SDK 那些部分的特性,可以排除任何这些依赖性。
Carthage
请确保您正在运行 Carthage 的最新版本,可以通过运行以下命令检查
brew update
brew upgrade carthage注意:我们建议使用 Carthage 版本 0.31.1 或更高版本。
将以下行添加到您的 Cartfile 文件中
github "facebook/facebook-swift-sdk"
# If you run into issues, try targeting the master branch
github "facebook/facebook-swift-sdk" "master"运行 carthage update。
注意:这将获取依赖性并将其放入 Carthage/Checkouts 文件夹中,然后逐个构建。
在您的应用程序目标的 General 设置选项卡中,Linked Frameworks and Libraries 部分处。
至少,您需要将以下框架从磁盘上的 Carthage/Build 目录拖放到此部分
FacebookCore.frameworkFBSDKCoreKit.framework
要使用 Facebook 登录
FacebookLogin.frameworkFBSDKLoginKit.framework
要使用分享和发送对话框
FacebookShare.frameworkFBSDKShareKit.framework
在您的应用程序目标的 Build Phases 选项卡中
- 点击
+图标,然后选择New Run Script Phase。 - 创建一个具有您选择的 shell(例如
/bin/sh)的脚本。 - 将以下命令添加到 shell 下方的脚本区域
/usr/local/bin/carthage copy-frameworks- 在
Input Files下添加您要使用的框架的路径,例如
$(SRCROOT)/Carthage/Build/iOS/FacebookCore.framework
$(SRCROOT)/Carthage/Build/iOS/FBSDKCoreKit.framework将 Facebook SDK 作为子项目使用
虽然不推荐,但完全可以在任何依赖管理系统之外构建 Swift 版本的 Facebook SDK。
注意:您将必须自己管理更新此解决方案(以及 iOS 版本的 Facebook SDK 上的依赖项)。
- 克隆仓库。
- 在仓库的根目录中运行以下命令:
git submodule update --init --recursive - 将
FacebookSwift.xcodeproj作为子项目添加到您的应用程序项目中。 - 将子项目的
FacebookCore.framework、FacebookLogin.framework和FacebookShare.framework构建设置产品添加到应用程序的链接框架和库和嵌入二进制文件部分。
别忘了还要嵌入/链接 FBSDKCoreKit.framework、FBSDKLoginKit.framework 和 FBSDKShareKit.framework。
模块
Swift 中的 Facebook SDK 框架组织方式与 iOS 中的 Facebook SDK 组织方式相同。
它们目前依赖于 iOS Facebook SDK,尽管将来可能会有所变化。
FacebookCore
依赖于 FBSDKCoreKit.framework。
包含了以下类型,对 Swift 进行了增强
AccessTokenApplicationDelegateAppEvents
包含了许多改进,包括带类型安全的内置 AppEvent、AppEvent 结构体等。
GraphRequest
您现在可以实施自己的类型安全的 GraphRequest,包括原生类型的结果。
SDKSettings
日志行为现在以类型安全集合的形式实现,基于 Swift 枚举。
Permission
不再是字符串类型(基于字符串),而是对读和写权限有单独的类型(还包含一个内置的权限列表,默认情况下包含大多数常见权限)。
FacebookLogin
依赖于 FacebookCore.framework 和 FBSDKLoginKit.framework。
包含了以下类型,对 Swift 进行了增强
LoginManager
现在使用 FacebookCore 中的类型安全权限,并具有带有 LoginBehavior 和 DefaultAudience 的构造函数,而不是需要手动设置属性。
LoginButton
创建后不能再更改权限,有助于确保为给定的一组权限使用单个登录按钮。请注意,LoginButton 目前不打算与界面构建器或故事板一起使用。我们可能会在未来重新解决这个问题。
FacebookShare
依赖于 FacebookCore.framework 和 FBSDKShareKit.framework。
包含了以下类型,对 Swift 进行了增强
LinkShareContent
现在是一个结构体,并强制实现了所需的属性。
OpenGraphShareContent
现在是一个结构体,使用类型安全的 OpenGraphPropertyName 和 OpenGraphPropertyValue,以及 OpenGraphObject 和 OpenGraphAction 的结构体。
PhotoShareContent
现在是一个结构体,并且在属性的类型安全方面有了改进。
VideoShareContent
现在是一个结构体,并且在属性的类型安全方面有了改进。
GraphSharer
现在是一个泛型类型,可以处理任何类型的内容。
ShareDialog
现在是一个泛型类型,可以处理任何类型的内容。
MessageDialog
现在是一个泛型类型,可以处理任何类型的内容。
GameRequest
现在是一个结构体,包含对 Recipient 和 Result 正确类型安全的枚举。
GameRequest.DialogAppGroupRequest.DialogAppInvite
现在是一个结构体,使用类型安全的 Promotion 属性,而不是分开的 promotionCode 和 promotionText。
AppInvite.Dialog
提供反馈
Swift 的 Facebook SDK 仍然处于测试阶段,我们非常欢迎您对它的想法和反馈。
- 有任何想法或功能请求吗? 创建一个问题。向我们说明有关功能或想法的更多内容,以及为什么您认为它是相关的。
- 有错误要报告吗? 创建一个问题。如果可能,请包括您使用的 SDK 版本以及任何技术细节。
- 需要帮助处理您的代码吗? 加入 Facebook 开发者组 或在 Stack Overflow 上提问。
贡献
所有 Facebook SDK for Swift 的开发都在 GitHub 上进行。贡献可以获得良好的声誉,我们非常欢迎新的贡献者。请在提交拉取请求之前阅读我们的 贡献指南。
单元测试术语
对于单元测试,我们选择遵循 Martin Fowler 提出的测试术语。这是为了避免混淆,因为许多这些术语经常被误用。
- 虚设对象被传递,但实际上从未使用。通常它们只是用来填充参数列表。
- 伪对象实际上有工作实现,但通常采取了某些捷径,使其不适合生产环境(如内存数据库就是一个很好的例子)。
- 存根为测试期间进行的调用提供预设答案,通常对未编程在测试中的任何内容都不会响应。
- 间谍是同时记录一些信息的存根。这可能是一种记录发送消息数量的邮件服务。
- 我们在这里讨论的是模拟对象:它们预先编写了期望,这些期望构成了对它们预期接收的调用的规范。来源:[https://martinfowler.com.cn/articles/mocksArentStubs.html](https://martinfowler.com.cn/articles/mocksArentStubs.html)
许可证
Facebook SDK for Swift采用MIT许可,如LICENSE文件所示。[https://github.com/facebook/facebook-swift-sdk/blob/master/LICENSE](https://github.com/facebook/facebook-swift-sdk/blob/master/LICENSE)