使用 Swift 语言重新编写的基于 RxSwift 的 SDK for iOS/macOS/tvOS/watchOS
RxAVObject
存储模块的核心类,代表一个对象,也就是一条 mongodb 的记录
保存一个对象
let todo = RxAVObject(className: "SwiftTodo")
todo["foo"] = "bar"
todo["birth"] = Date()
let folder = RxAVObject(className: "SwiftTodoFolder")
todo["folder"] = folder
todo.save().map { (avObject) -> String in
return avObject.objectId!
}.observeOn(MainScheduler.instance).subscribe({ print($0) })
RxAVQuery
是构建针对 RxAVObject 的查询基础类
基本查询
let query = RxAVQuery(className: "SwiftTodo").equalTo(key: "foo", value: "bar")
query.find().map { (list) -> Array<String> in
return list.map({ (obj) -> String in
return obj.objectId!
})
}.subscribe (onNext: { response in
print(response) }
)
RxAVRealtime
聊天模块的基础类,它负责提供创建对话,发送消息,接收消息等接口
RxAVRealtime.sharedInstance
建议全局使用默认提供的单例模式
登录到聊天服务器
RxAVRealtime.sharedInstance.connect(clientId: "junwu").subscribe(onNext: { success in
print(success)// true 则表示连接聊天服务器成功
})
创建对话
try! RxAVRealtime.sharedInstance.connect(clientId: "junwu").flatMap { (connected) -> Observable<IAVIMConversation> in
let conversation = AVIMConversation(members: ["hey"], creator: "junwu")
return try RxAVRealtime.sharedInstance.create(options: AVIMConversationCreateOptions(conversation: conversation))
}.subscribe(onNext: { conversation in
print(conversation.conversationId)
})
发送消息
try! RxAVRealtime.sharedInstance.connect(clientId: "junwu").flatMap { (connected) -> Observable<IAVIMConversation> in
let conversation = AVIMConversation(members: ["hey"], creator: "junwu")
return try RxAVRealtime.sharedInstance.create(options: AVIMConversationCreateOptions(conversation: conversation))
}.flatMap({ (conversation) -> Observable<IAVIMMessage> in
return try RxAVRealtime.sharedInstance.send(conversationId: conversation.conversationId, jsonData: ["type": "text", "text": "hello world"])
}).subscribe(onNext: { message in
print(message.id)
})
接收消息
try! RxAVRealtime.sharedInstance.connect(clientId: "junwu").flatMap { (connected) -> Observable<IAVIMMessage> in
return RxAVRealtime.sharedInstance.onMessage
}.subscribe(onNext: { message in
print(message.id, message.raw)
})
更多模块和功能正在建设中,欢迎访问 RxLeanCloud