FacebookCore 0.9.0

FacebookCore 0.9.0

测试已测试
Lang语言 SwiftSwift
许可 NOASSERTION
发布最后发布2019年9月
SPM支持 SPM

Joe Susnick 维护。



  • Facebook

Swift Facebook SDK (Beta)

Swift Version Platforms Build Status

CocoaPods Carthage compatible

为将您应用与 Facebook 集成而量身定制的 Swift 体验。包括

重要

注意: 此 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.frameworkFacebookLogin.frameworkFacebookShare.framework 构建产品添加到您的应用的 链接框架和库 以及 嵌入二进制文件 部分。

别忘了还要嵌入/链接 FBSDKCoreKit.frameworkFBSDKLoginKit.frameworkFBSDKShareKit.framework

模块

Swift中Facebook SDK框架的组织方式和iOS中的Facebook SDK一样。

它们目前也依赖于iOS的Facebook SDK,但这可能在将来某个时候改变。

FacebookCore

FacebookCore on CocoaPods

依赖于 FBSDKCoreKit.framework

包含以下类型,并对Swift进行了增强

  • AccessToken
  • ApplicationDelegate
  • AppEvents

包含大量改进,包括类型安全的内置 AppEvent,一个新的 AppEvent 结构体等。

  • GraphRequest

您现在可以实现自己的类型安全的 GraphRequest,包括原生类型的结果。

  • SDKSettings

日志行为现在以类型安全集的形式实现,基于Swift枚举。

  • Permission

不再使用基于字符串的类型(基于字符串),而是分别使用读取和写入权限的类型(包括一个内置的权限列表,默认包括大多数常见的权限)。

FacebookLogin

FacebookCore on CocoaPods

依赖于 FacebookCore.frameworkFBSDKLoginKit.framework

包含以下类型,并对Swift进行了增强

  • LoginManager

现在使用 FacebookCore 中的类型安全权限,并具有 LoginBehaviorDefaultAudience 构造函数,而不是手动设置属性。

  • LoginButton

创建后无法再更改权限,这有助于强制使用单个登录按钮为给定的一组权限。请注意,当前 LoginButton 不适用于界面构建器或故事板。我们可能在将来重新解决这个问题。

FacebookShare

FacebookCore on CocoaPods

依赖于 FacebookCore.frameworkFBSDKShareKit.framework

包含以下类型,并对Swift进行了增强

  • LinkShareContent

现在是一个结构体,并有一个适当地初始化器来强制执行所需的属性。

  • OpenGraphShareContent

现在是一个结构体,使用类型安全的OpenGraphPropertyNameOpenGraphPropertyValue,以及用于OpenGraphObjectOpenGraphAction的结构体。

  • PhotoShareContent

现在是一个结构体,并在其属性上有更好的类型安全。

  • VideoShareContent

现在是一个结构体,并在其属性上有更好的类型安全。

  • GraphSharer

现在是一个通用类型,可以处理任何类型的内容。

  • ShareDialog

现在是一个通用类型,可以处理任何类型的内容。

  • MessageDialog

现在是一个通用类型,可以处理任何类型的内容。

  • GameRequest

现在是一个struct,包含对RecipientResult适当的类型安全枚举。

  • GameRequest.Dialog
  • AppGroupRequest.Dialog
  • AppInvite

现在是一个结构体,使用类型安全的 Promotion 属性,而不是分开的 promotionCodepromotionText

  • 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)中所示。