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
注意:我们支持 CocoaPods 1.0.1 或更高版本。
通过运行以下命令更新您的本地 spec 仓库:
pod repo update
注意:此步骤是可选的,如果您最近已更新了 spec 仓库。
将以下行添加到您的 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上发生。贡献可以带来良好的声誉,我们非常欢迎新的贡献者。我们要求您在提交Pull Request之前阅读我们的贡献指南。
单元测试术语
对于单元测试,我们选择遵循Martin Fowler提出的测试术语。这是为了避免混淆,因为许多这些术语普遍被误用。
- 传入假对象,但从未真正使用。通常它们只是用来填充参数列表。
- 伪造对象具有实际实现,但通常采取一些捷径,使其不适用于生产(内存数据库是一个很好的例子)。
- 存根在测试中提供预先录制好的答案,通常只对在测试中程序化编程的部分做出响应。
- 间谍桩是一种也被记录某些信息的桩,根据它们是如何被调用的进行记录。这种形式可能是一种记录被发送消息数量的电子邮件服务。
- 本文要讨论的是模拟对象:预编程期望的单元对象,这些期望形成调用它们的规范。来源:[https://martinfowler.com.cn/articles/mocksArentStubs.html](https://martinfowler.com.cn/articles/mocksArentStubs.html)
授权
Swift 中的 Facebook SDK 采用 MIT 授权,详情请见 LICENSE
文件。