GPhotos 0.6.0

GPhotos 0.6.0

Deivi Taka 维护。



 
依赖项
GTMAppAuth~> 1.0.0
AppAuth~> 1.0
Moya~> 13.0
ObjectMapper~> 3.4
 

GPhotos 0.6.0

GPhotos

CI Status Version License Platform

我想以 Swift 消费 Google Photos API,但撰写本文时,没有任何框架可以以简单的方式实现这一点。

那为什么不分享我的理解呢?

实现的方法列表

  • 身份验证

    • 自动刷新令牌
    • 自动请求授权
  • 相册

    • addEnrichment - 在定义的相册中指定位置添加增强功能。
    • batchAddMediaItems - 将一个或多个媒体项添加到用户 Google Photos 库中的一个相册。
    • batchRemoveMediaItems - 从指定的相册中删除一个或多个媒体项。
    • create - 在用户 Google Photos 库中创建一个相册。
    • get - 根据指定的 albumId 返回相册。
    • list - 列出在 Google Photos 应用程序的“相册”标签中显示给用户的相册。
    • share - 标记相册为共享并可由其他用户访问。
    • unshare - 将先前共享的相册标记为私有。
  • 共享相册

    • get - 根据指定的 shareToken 返回相册。
    • join - 代表 Google Photos 用户加入共享相册。
    • leave - 代表 Google Photos 用户离开先前加入的共享相册。
    • list - 列出在用户 Google Photos 应用的“共享”选项卡中可用的所有共享相册。
  • 媒体项

    • batchCreate - 在用户 Google Photos 库中创建一个或多个媒体项。
    • batchGet - 返回指定媒体项标识符的媒体项列表。
    • get - 返回指定媒体项标识符的媒体项。
    • list - 列出用户 Google Photos 库中的所有媒体项。
    • search - 在用户 Google Photos 库中搜索媒体项。

示例

要运行示例项目,首先克隆仓库,然后从 Example 目录运行 pod install

安装

通过 CocoaPods 安装,请在 Podfile 中添加 pod 'GPhotos' 并运行 pod install

设置

  • 根据以下说明设置 OAuth 2.0 客户端 ID此处,下载 .plist 文件并将其添加到项目中。

  • AppDelegate.swift 中,当应用程序启动完成后配置 GPhotos。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    var config = Config()
    config.printLogs = false
    GPhotos.initialize(with: config)
    // Other configs
}
  • 为了处理在授权过程中的重定向,增加或编辑以下方法。
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    let gphotosHandled = GPhotos.continueAuthorizationFlow(with: url)
    // other app links
    return gphotosHandled
}

使用

认证

  • GPhotos.isAuthorized 如果用户已经授权将返回 true。

  • GPhotos.logout() 清除会话信息并使任何保存的令牌无效。

  • GPhotos.authorize(with scopes:) 默认情况下,使用 openid 范围启动认证过程。只有在有新范围时才会执行。根据 Google 的建议,在第一次运行时,应该逐渐添加范围,而非需要在使用它们时才添加。此方法将返回一个布尔值,指示成功状态,并在出错时返回一个错误。

  • GPhotos.switchAccount(with scopes:) 默认情况下,使用 openid 范围启动认证过程。将忽略当前的认证范围。此方法将返回一个布尔值,指示成功状态,并在出错时返回一个错误。

照片 API

GPhotosApi 的实例保存下来,以便可以在不同的功能之间使用分页。

相册

创建

  • create(album:)返回新生成的相册对象

列表

  • list()每次调用时都加载连续的物品页面。
  • reloadList()总是加载第一页。

获取

  • get(id:)返回指定id的Album

分享

  • share(id:options:)将与提供id的相册共享,并返回相册的ShareInfo
  • unshare(id:)返回一个布尔值,表示操作成功状态。

增强

  • addEnrichment(id:enrichment:position)

媒体项

向相册添加或删除项目只需媒体项目ID集合。

  • addMediaItems(id:mediaIds:)
  • removeMediaItems(id:mediaIds:)

媒体项目

列表

  • list()reloadList() 与在相册中的用法相同

获取

  • get(id:) 返回ID提供的 MediaItem
  • getBatch(ids:) 返回ID数组提供的 MediaItems

搜索

  • search(with request:) 在每次调用时都会加载项目顺序页面。结果基于请求中的筛选条件。如果没有应用筛选条件,它将返回与 list() 相同的结果
  • reloadSearch(with request:) 总是加载第一页。

批量创建

  • upload(images:) 接受一个 UIImage 数组,并将它们逐个上传到用户的库中。这些上传将计入用户Google帐户中的存储量。

共享相册

获取

  • get(token:) 返回共享相册的详细信息。

加入

  • join(token:)leave(token:) 以共享令牌作为参数,如果令牌正确,则加入或离开共享相册。

列表

  • list()reloadList() 与在相册中的用法相同

许可

GPhotos 根据 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。