FacebookLogin 0.9.0

FacebookLogin 0.9.0

测试已测试
语言语言 SwiftSwift
许可证 NOASSERTION
发布上次发布2019年9月
SPM支持 SPM

Joe Susnick 维护。



 
依赖关系
FacebookCore~> 0.9.0
FBSDKCoreKit~> 5.0
FBSDKLoginKit~> 5.0
 

  • Facebook

Swift 中 Facebook SDK (Beta)

Swift Version Platforms Build Status

CocoaPods Carthage compatible

针对 Swift 定制的体验,以便将您的应用程序与 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.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

包含了许多改进,包括带类型安全的内置 AppEventAppEvent 结构体等。

  • 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

现在是一个结构体,包含对 RecipientResult 正确类型安全的枚举。

  • GameRequest.Dialog
  • AppGroupRequest.Dialog
  • AppInvite

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

  • 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)