RxLeanCloudSwift for iOS

RxLeanCloudSwift

使用 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