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.framework
FBSDKCoreKit.framework
要使用 Facebook 登录
FacebookLogin.framework
FBSDKLoginKit.framework
要使用分享和发送对话框
FacebookShare.framework
FBSDKShareKit.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 进行了增强
AccessToken
ApplicationDelegate
AppEvents
包含了许多改进,包括带类型安全的内置 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.Dialog
AppGroupRequest.Dialog
AppInvite
现在是一个结构体,使用类型安全的 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)