Swift Facebook SDK (Beta)
为将您应用与 Facebook 集成而量身定制的 Swift 体验。包括
- 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
注意:我们支持1.0.1或更高版本的CocoaPods。
通过以下命令更新您的本地spec存储库:
pod repo update
注意:此步骤是可选的,如果您最近已经更新了spec存储库。
将以下行添加到您的Podfile中
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'
运行 pod install
并完成操作!
如果不需要SDK特定部分的特性,您可以排除这些依赖项。
Carthage
确保您正在运行Carthage的最新版本,通过运行以下命令来确保:
brew update
brew upgrade carthage
注意:我们推荐使用0.31.1或更高版本的Carthage。
将以下行添加到您的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
现在是一个struct,包含对Recipient
、Result
适当的类型安全枚举。
GameRequest.Dialog
AppGroupRequest.Dialog
AppInvite
现在是一个结构体,使用类型安全的 Promotion
属性,而不是分开的 promotionCode
和 promotionText
。
AppInvite.Dialog
提供反馈
Swift的Facebook SDK仍在beta版,我们非常期待听到您对该 SDK 的想法和反馈。
- 有个想法或特性请求吗? 创建一个问题。告诉我们更多关于该特性或想法以及为什么您认为它相关。
- 想要报告一个错误吗? 创建一个问题。如果可能的话,包括您正在使用的 SDK 版本以及任何技术细节。
- 需要帮助您的代码? 加入 Facebook Developers Group 在 Facebook 上或在 Stack Overflow 上提问。
贡献
所有 Facebook SDK for Swift 开发都在 GitHub 上发生。贡献是良好的命运,我们非常欢迎新的贡献者。我们要求在提交拉取请求之前,您先阅读我们的 贡献指南。
单元测试术语
对于单元测试,我们选择遵循 Martin Fowler 提出的测试术语。这是为了避免混淆,因为这些术语中的许多普遍被误用。
- 占位符对象被传递,但实际上从未使用。通常,它们只是用来填充参数列表。
- 伪造对象实际上有工作实现,但通常采取一些捷径,使它们不适合生产(内存数据库是很好的例子)。
- 存根提供测试期间对调用程序的预设答案,通常不会对编程中未编程之外的内容做出任何回答。
- 间谍是桩,它们根据被调用的方式记录一些信息。这种形式可能是一种记录发送了多少消息的电子邮件服务。
- 模拟(Mocks)是我们这里在谈论的内容:预先编程了期望的对象,它们构成了对预期接收到的方法的规范。来源:[Mock不是桩](https://martinfowler.com.cn/articles/mocksArentStubs.html)
授权
Swift中的Facebook SDK遵循MIT授权,如[授权文件](https://github.com/facebook/facebook-swift-sdk/blob/master/LICENSE)中所示。