Tapglue 3.0.3

Tapglue 3.0.3

测试已测试
Lang语言 SwiftSwift
许可证 Apache 2
发布最后发布2017 年 2 月
SwiftSwift 版本3.0
SPM支持 SPM

TapglueJohn Nilsen 维护。



 
依赖项
RxSwift= 3.0.1
ObjectMapper= 2.0.0
 

Tapglue 3.0.3

Tapglue iOS SDK

这将帮助你通过分步指南在 iOS 上逐步开始使用 Tapglue。

更详细的文档可以在我们的文档网站上找到。

如果您对 iOS SDK 参考文档感兴趣,可以访问我们的CocoaPods文档。

开始

要开始使用 Tapglue API,您需要一个 APP_TOKEN。访问我们的仪表板并使用您的凭据登录或创建一个新账户。

示例应用

我们的示例应用涵盖了 SDK 中的大多数概念,如果你想检查实现细节,它是一个很好的展示。

安装 SDK

本页面将帮助你通过分步指南在 iOS 上开始使用 Tapglue。

手动安装

如果您不想使用 CocoaPods,您可以从GitHub 下载 Tapglue 的最新版本并将其复制到项目中。

  1. 使用 git clone https://github.com/tapglue/ios_sdk.git 克隆 SDK
  2. 将 SDK 复制到您的 Xcode 项目文件夹
  3. 导入所有依赖项

初始化库

要开始使用 Tapglue,您必须首先使用您的应用令牌初始化我们的 SDK。您可以在Tapglue 仪表板中找到您的应用令牌。

要实例化 Tapglue,只需调用构造函数并传递一个带有您的设置的配置实例。我们建议在中心位置设置配置并重用它,例如在应用委托中。

SDK 配置

如果您想使用自定义配置初始化SDK,可以指定以下属性

  • baseUrl
  • appToken
  • log

以下示例展示了如何使用配置和实例化Tapglue。

import Tapglue

let configuration = Configuration()
configuration.baseUrl = "https://api.tapglue.com"
configuration.appToken = "your app token"
// setting this to true makes the sdk print http requests and responses
configuration.log = true

let tapglue = Tapglue(configuration: configuration)
let rxTapglue = RxTapglue(configuration: configuration)

我们提供了两种Tapglue实现,一种是默认的实现,带有回调,另一种是返回RxSwift Observables的。

通知

如果您打算使用我们的通知服务信号,请将以下内容添加到您的应用代理中的配置中。

sims = TapglueSims(appToken: appToken, url: url, environment: .Sandbox)
registerForPushNotifications(application)
Tapglue.setSessionTokenNotifier(sims)

最后,您只需要提供我们的推送证书并配置参数。

参数 描述 示例
url 应注册令牌的URL。 https://api.tapglue.com
环境 .Sandbox.Production,取决于您的证书环境。 .Sandbox

兼容性

此框架与iOS 8.0及以上版本兼容

RxSwift或回调

SDK提供了两个接口,具有完全相同的功能。其中一个使用回调来返回结果,另一个使用RxSwift Observables。如果想要了解RxSwift的更多内容,可以在这里了解更多。

如果您熟悉RxSwift和FRP,使用Rx接口的交互将是显而易见的。对于回调,我们始终有类似的方式来表达它,对于返回实体(用户、帖子等)的API调用,方法期望一个具有以下签名的方法块

(entity: Entity?, error: ErrorType?) -> ()

当API请求没有返回实体时,签名将如下所示

(success: Bool, error: ErrorType?) -> ()

分页

我们的SDK提供了分页端点。这意味着您可能需要浏览多页才能从端点获取所有信息。这适用于以列表形式返回数据的端点。前一个页面代表比当前页面更早的内容。

回调

tapglue.retrieveFollowers() { (page:Page<User>?, error:Error?) in

}

假设您有一个页面,并且想要前一个页面

page.previous() { (page:Page<User>?, error: Error?) in
    secondPage = page
}

RxSwift

tapglue.retrieveFollowers().subscribe(onNext: {(page:RxPage<User>) in

})

假设您有一个页面,并且想要前一个页面

page.previous().subscribe(onNext: {(page:RxPage<User>) in

})

创建用户

在您的iOS应用中安装Tapglue之后,创建用户通常是您需要做的第一件事,为您的新闻源构建基础。

let user = User()
user.username = "some username"
user.password = "some password"

tapglue.createUser(user) { user, error in

}

//RxSwift
tapglue.createUser(user).subscribe()

用户登录

登录用户有两种方式:通过用户名或通过电子邮件。以下是通过用户名登录的示例

tapglue.loginUser("username", password: "password") { user, error in

}

//RxSwift
tapglue.loginUser("username", password: "password").subscribe()

注意:从v1迁移

创建用户不再会自动登录用户。

用户登出

要登出当前用户,调用logout

tapglue.logout() { success, error in

}

//RxSwift
tapglue.logout().subscribe()

当前用户

登录用户成功后,我们默认将其存储为currentUser。当前用户是TapglueRxTapglue实例上的属性。登录后,它会持久化并可以通过调用refreshCurrentUser()来刷新。

var currentUser = tapglue.currentUser

//refreshing the current user
tapglue.refreshCurrentUser() {user, error in
  if let user = user {
    currentUser = user
  }
}

//refreshing the current user in RxSwift
tapglue.refreshCurrentUser().subscribeNext {user in
  currentUser = user
}

更新当前用户

要更新当前用户,请调用 updateCurrentUser(user: User)

let user = tapglue.currentUser
user.email = "[email protected]"
tapglue.updateCurrentUser(user) {user, error in
}

//RxSwift
tapglue.updateCurrentUser(user).subscribe()

删除当前用户

这将把用户从Tapglue中删除。此操作发生后,用户无法再次恢复。

tapglue.deleteCurrentUser() { success, error in
}

//RxSwift
tapglue.deleteCurrentUser().subscribe()

搜索用户

连接用户并构建社交图谱是构建社交体验最具挑战性的部分之一。我们提供了三种简单的方法来帮助您开始。

搜索单个用户

在您的应用中创建用户之间连接的一种方式是进行搜索。这可以通过以下方式实现

tapglue.searchUsersForTerm("searchTerm") {users, error in
}

//RxSwift
tapglue.searchUsersForTerm("searchTerm").subscribeNext { users in
}

这将在usernamefirstNamelastNameemail中搜索提供的术语。

电子邮件搜索

如果您想搜索多个电子邮件并获取用户列表,这通常是在您想从地址簿等来源同步用户的情况下。为此使用以下方法

tapglue.searchEmails(emails) {users, error in
}

//RxSwift
tapglue.searchEmails(emails).subscribeNext {users in
}

社交Ids搜索

如果您想从另一个网络(如Facebook或Twitter)同步用户,您可以使用类似的方法实现。

let ids = ["id1", "id2"]
tapglue.searchSocialIds(ids, onPlatform: "facebook") { users, error in
}

//RxSwift
tapglue.searchSocialIds(ids, onPlatform: "facebook").subscribeNext { users in
}

连接用户

要连接用户,您需要创建一个Connection实体。连接实体包括一个userId、一个ConnectionType和一个ConnectionState。用户ID代表连接的对象,ConnectionType可以是类型FollowFriend,而ConnectionState可以是表示请求必须由另一方接受的Pending、表示不需要接受请求的Confirmed,或者表示另一方拒绝请求的Rejected

当一个处于Pending状态的Connection请求由另一个用户接收时,您可以通过设置ConnectionStateConfirmed来响应。

关注或成为好友

let connection = Connection(toUserId: "userId", type: .Follow, state: .Confirmed)

tapglue.createConnection(connection) { connection, error in
}

//RxSwift
tapglue.createConnection(connection).subscribeNext { connection in
}

删除连接

tapglue.deleteConnection(toUserId: "123", type: .Follow) { success, error in 
}

//RxSwift
tapglue.deleteConnection(toUserId: "123", type: .Follow).subscribeNext { _ in
}

您可以在下面的参考文档中了解更多关于删除连接等其他信息。

创建帖子

事件对于构建通知中心或活动流非常强大。然而,如果您想包含用户生成的内容以构建合适的新闻源,我们提供了更强大的实体给您:Posts

帖子依赖关系

要创建帖子,首先您需要指定两件事:可见性和附件。可见性的可能值为.Private(仅创作者可见)、.Connections(创作者的连接和创作者可见)和.Public(任何人可见)。

附件

每篇文章可以包含多个附件。文章的附件目前可以是文本或URL的类型。文本可以用来表示用户生成的文本。URL对于不同用例非常有用,例如指向图片或视频的引用。此外,您可以为每个附件指定一个名称,以增加对文章的更多背景信息。

附件实体的内容属性是一个字典,键表示BCP47编码的语言,值是内容(文本、URL或图片)。

let attachment = Attamchment(contents: ["en":"some content"], name: "my attachment", type: .Text)

创建文章

所以,将最后几个概念综合起来,创建文章的过程非常直接。

let attachment = Attamchment(contents: ["en":"some content"], name: "my attachment", type: .Text)

let post = Post(visibility: .Connections, attachments: [attachment])

tapglue.createPost(post) { post, error in
}

//RxSwift
tapglue.createPost(post).subscribeNext { post in
}

评论和反应

文章是新闻.tell的核心实体。为了提供更丰富、更具吸引力的体验,Tapglue允许您对文章进行评论或反应。

创建评论

评论由内容字典组成,键是BCP47编码的语言,值是文本(类似于附件),还有一个postId。要创建评论,首先您需要创建一个评论实体,然后在tapglue上创建它。

let comment = Comment(contents: ["en":"my comment"], postId: "postId")

tapglue.createComment(comment) { comment, error in
}

//RxSwift
tapglue.createComment(comment).subscribeNext { comment in
}

检索评论

要检索文章上的评论

tapglue.retrieveComments("postId") { comments, error in
}

//RxSwift
tapglue.retrieveComments("postId").subscribeNext { comments in
}

更新评论

要更新或删除评论,可以使用

  • updateComment
  • deleteComment

您可以在下面的参考文档中了解更多关于删除评论等内容。

对文章进行反应

文章支持以下反应:likelovewowhahaangrysad。以下是一个创建反应的示例

tapglue.createReaction(.wow, forPostId: postId).subscribe()

删除反应

要删除反应,请调用deleteReaction

tapglue.deleteReaction(.wow, forPostId: postId).subscribe()

喜欢文章

要喜欢一篇文章,您只需调用createLike并传入文章ID即可。

tapglue.createLike(forPostId: "postId") { like, error in
}

//RxSwift
tapglue.createLike(forPostId: "postId").subscribeNext { like in
}

注意:这些喜欢与反应中的喜欢不同。

检索喜欢

要检索文章上的喜欢,请调用retrieveLikes并传入文章ID。

取消喜欢文章

要删除喜欢,请调用deleteLike并传入之前喜欢的文章ID。

显示动态

一般来说,Tapglue提供了三种不同类型的动态

  • 新闻动态
  • 文章动态
  • 活动动态

新闻动态包含:用户社交图中的文章和活动。文章动态和活动动态只包含它们关联类型的内容。

此外,Tapglue还提供单个用户的文章和活动列表。

  • 用户文章
  • 用户活动

最终,您还有机会对动态进行查询,以只获取特定类型的事件。

新闻动态

在检索新闻动态时,您将得到列表:postsactivities,为此请运行

tapglue.retrieveNewsFeed() { newsFeed, error in
}

//RxSwift
tapglue.retrieveNewsFeed().subscribeNext { newsFeed in
}

文章动态

要检索帖子源,可以使用以下方法

tapglue.retrievePostFeed() { posts, error in
}

//RxSwift
tapglue.retrievePostFeed().subscribeNext { posts in
}

活动源

类似于上面的示例,您可以按照以下示例检索活动源

tapglue.retrieveActivityFeed() { activities, error in
}

//RxSwift
tapglue.retrieveActivtiyFeed().subscribeNext { activities in
}

用户帖子

您还可以检索单个用户的帖子,并将它们显示在例如个人资料屏幕下。

tapglue.retrievePostsByUser("userId") { posts, error in
}

//RxSwift
tapglue.retrievePostsByUser("userId").subscribeNext { posts in
}

朋友和关注者列表

您可能希望在您的应用程序中向当前用户展示朋友、关注者和被关注者列表。为此,我们提供了以下方法:

  • retrieveFollowers
  • retrieveFollowings

这些方法也可以应用于其他用户,通过以下方式:

  • retrieveFollowersForUserId
  • retrieveFollowingsForUserId

检索关注者

以下是一个检索当前用户所有关注者的示例

tapglue.retrieveFollowers() { users, error in
}

//RxSwift
tapglue.retrieveFollowers().subscribeNext { users in
}

调试和日志记录

您可以通过使用自定义配置初始化SDK并设置启用日志记录来开启Tapglue日志。

let configuration = Configuration()
let configuration.log = true

let tapglue = Tapglue(configuration: configuration)

//RxSwift
let tapglue = RxTapglue(configuration: configuration)

错误处理

错误处理是构建应用程序时非常重要的领域。为了始终为用户提供最佳的用户体验,我们定义了TapglueError

在使用回调时,大多数方法将提供您一个值或一个错误。我们建议始终先检查success或值,然后在错误发生时处理它们。当使用Rx Observables时,错误将发送到错误事件。

每个错误将包含一个code和一个message。您可以使用代码在某些错误上定义行为。

许可证

此SDK在Apache 2.0许可证下提供。有关完整的许可证,请参阅随SDK一起提供的LICENSE文件。

请求数

待办:在外部对象上实施评论和点赞