测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | Apache 2 |
发布最后发布 | 2017 年 2 月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Tapglue 和 John Nilsen 维护。
依赖项 | |
RxSwift | = 3.0.1 |
ObjectMapper | = 2.0.0 |
这将帮助你通过分步指南在 iOS 上逐步开始使用 Tapglue。
更详细的文档可以在我们的文档网站上找到。
如果您对 iOS SDK 参考文档感兴趣,可以访问我们的CocoaPods文档。
要开始使用 Tapglue API,您需要一个 APP_TOKEN
。访问我们的仪表板并使用您的凭据登录或创建一个新账户。
我们的示例应用涵盖了 SDK 中的大多数概念,如果你想检查实现细节,它是一个很好的展示。
本页面将帮助你通过分步指南在 iOS 上开始使用 Tapglue。
如果您不想使用 CocoaPods,您可以从GitHub 下载 Tapglue 的最新版本并将其复制到项目中。
git clone https://github.com/tapglue/ios_sdk.git
克隆 SDK要开始使用 Tapglue,您必须首先使用您的应用令牌初始化我们的 SDK。您可以在Tapglue 仪表板中找到您的应用令牌。
要实例化 Tapglue,只需调用构造函数并传递一个带有您的设置的配置实例。我们建议在中心位置设置配置并重用它,例如在应用委托中。
如果您想使用自定义配置初始化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及以上版本兼容
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
}
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()
创建用户不再会自动登录用户。
要登出当前用户,调用logout
。
tapglue.logout() { success, error in
}
//RxSwift
tapglue.logout().subscribe()
登录用户成功后,我们默认将其存储为currentUser
。当前用户是Tapglue
和RxTapglue
实例上的属性。登录后,它会持久化并可以通过调用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
}
这将在username
、firstName
、lastName
和email
中搜索提供的术语。
如果您想搜索多个电子邮件并获取用户列表,这通常是在您想从地址簿等来源同步用户的情况下。为此使用以下方法
tapglue.searchEmails(emails) {users, error in
}
//RxSwift
tapglue.searchEmails(emails).subscribeNext {users in
}
如果您想从另一个网络(如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
可以是类型Follow
或Friend
,而ConnectionState
可以是表示请求必须由另一方接受的Pending
、表示不需要接受请求的Confirmed
,或者表示另一方拒绝请求的Rejected
。
当一个处于Pending
状态的Connection
请求由另一个用户接收时,您可以通过设置ConnectionState
为Confirmed
来响应。
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
您可以在下面的参考文档中了解更多关于删除评论等内容。
文章支持以下反应:like
、love
、wow
、haha
、angry
、sad
。以下是一个创建反应的示例
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还提供单个用户的文章和活动列表。
最终,您还有机会对动态进行查询,以只获取特定类型的事件。
在检索新闻动态时,您将得到列表:posts
和activities
,为此请运行
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文件。
待办:在外部对象上实施评论和点赞