-
Notifications
You must be signed in to change notification settings - Fork 67
upgrade from objc sdk 12 to objc sdk 13
在 12 版本中,通过 CocoaPods 集成 objc-sdk 需要引入三个库:AVOSCloud
、AVOSCloudIM
、AVOSCloudLiveQuery
。
在 13 版本中,通过 CocoaPods 集成 objc-sdk 只需引入一个库 LeanCloudObjc
即可。
如果只需要存储等基础功能,可以通过 Subspecs 方式只引入 LeanCloudObjc/Foundation
。
新版中,LeanCloudObjc/Foundation
功能上等同于 AVOSCloud
;LeanCloudObjc/Realtime
功能上等同于 AVOSCloudIM
+ AVOSCloudLiveQuery
。
在 12 版本中,需引入的头文件如下:
#import <AVOSCloud/AVOSCloud.h>
#import <AVOSCloudIM/AVOSCloudIM.h>
#import <AVOSCloudLiveQuery/AVOSCloudLiveQuery.h>
在 13 版本中,需引入的头文件如下:
#import <LeanCloudObjc/Foundation.h>
// 如果只集成了 `LeanCloudObjc/Foundation`,则无需引入 `Realtime.h`
#import <LeanCloudObjc/Realtime.h>
在 12 版本中,命名空间是 AV
,例如:AVObject
,AVUser
,AVQuery
等等。
在 13 版本中,命名空间变更为 LC
,例如:LCObject
,LCUser
,LCQuery
等等。
在 12 版本中,初始化应用的样例如下:
[AVOSCloud setAllLogsEnabled:true];
[AVOSCloud setApplicationId:@"id" clientKey:@"key" serverURLString:@"url"];
在 13 版本中,AVOSCloud
类被移除,新增 LCApplication
类,可通过 LCApplication
初始化应用,样例如下:
[LCApplication setAllLogsEnabled:true];
[LCApplication setApplicationId:@"id" clientKey:@"key" serverURLString:@"url"];
AVOSCloud
被 LCApplication
替代。
通过 LCIMClient
创建会话的方法,变动如下:
+ @interface LCIMConversationCreationOption : NSObject
+ @property (nonatomic, nullable) NSString *name;
+ @property (nonatomic, nullable) NSDictionary *attributes;
+ @property (nonatomic) BOOL isUnique;
+ @property (nonatomic) NSUInteger timeToLive;
+ @end
@interface LCIMClient : NSObject
- - (void)createConversationWithName:(NSString * _Nullable)name clientIds:(NSArray<NSString *> *)clientIds callback:(void (^)(AVIMConversation * _Nullable conversation, NSError * _Nullable error))callback;
- - (void)createChatRoomWithName:(NSString * _Nullable)name attributes:(NSDictionary * _Nullable)attributes callback:(void (^)(AVIMChatRoom * _Nullable chatRoom, NSError * _Nullable error))callback;
- - (void)createTemporaryConversationWithClientIds:(NSArray<NSString *> *)clientIds timeToLive:(int32_t)ttl callback:(void (^)(AVIMTemporaryConversation * _Nullable temporaryConversation, NSError * _Nullable error))callback;
- - (void)createConversationWithName:(NSString * _Nullable)name clientIds:(NSArray<NSString *> *)clientIds attributes:(NSDictionary * _Nullable)attributes options:(AVIMConversationOption)options callback:(void (^)(AVIMConversation * _Nullable conversation, NSError * _Nullable error))callback;
- - (void)createConversationWithName:(NSString * _Nullable)name clientIds:(NSArray<NSString *> *)clientIds attributes:(NSDictionary * _Nullable)attributes options:(AVIMConversationOption)options temporaryTTL:(int32_t)temporaryTTL callback:(void (^)(AVIMConversation * _Nullable conversation, NSError * _Nullable error))callback;
+ - (void)createConversationWithClientIds:(NSArray<NSString *> *)clientIds callback:(void (^)(LCIMConversation * _Nullable conversation, NSError * _Nullable error))callback;
+ - (void)createConversationWithClientIds:(NSArray<NSString *> *)clientIds option:(LCIMConversationCreationOption * _Nullable)option callback:(void (^)(LCIMConversation * _Nullable conversation, NSError * _Nullable error))callback;
+ - (void)createChatRoomWithCallback:(void (^)(LCIMChatRoom * _Nullable chatRoom, NSError * _Nullable error))callback;
+ - (void)createChatRoomWithOption:(LCIMConversationCreationOption * _Nullable)option callback:(void (^)(LCIMChatRoom * _Nullable chatRoom, NSError * _Nullable error))callback;
+ - (void)createTemporaryConversationWithClientIds:(NSArray<NSString *> *)clientIds callback:(void (^)(LCIMTemporaryConversation * _Nullable temporaryConversation, NSError * _Nullable error))callback;
+ - (void)createTemporaryConversationWithClientIds:(NSArray<NSString *> *)clientIds option:(LCIMConversationCreationOption * _Nullable)option callback:(void (^)(LCIMTemporaryConversation * _Nullable temporaryConversation, NSError * _Nullable error))callback;
@end
默认行为方面的变动:
在 12 版本中,创建一般会话时,默认为非 unique 会话。
在 13 版本中,创建一般会话时,默认为 unique 会话。
@protocol LCIMSignatureDataSource <NSObject>
- - (LCIMSignature *)signatureWithClientId:(NSString *)clientId conversationId:(NSString * _Nullable)conversationId action:(LCIMSignatureAction)action actionOnClientIds:(NSArray<NSString *> * _Nullable)clientIds;
+ - (void)client:(LCIMClient *)client action:(LCIMSignatureAction)action conversation:(LCIMConversation * _Nullable)conversation clientIds:(NSArray<NSString *> * _Nullable)clientIds signatureHandler:(void (^)(LCIMSignature * _Nullable))handler;
@end
新协议方法支持了异步回调。
+ @interface LCIMMessagePatchedReason : NSObject
+ @property (nonatomic) NSInteger code;
+ @property (nonatomic, nullable) NSString *reason;
+ @end
@protocol LCIMClientDelegate <NSObject>
- - (void)conversation:(LCIMConversation *)conversation messageHasBeenUpdated:(LCIMMessage *)message;
+ - (void)conversation:(LCIMConversation *)conversation messageHasBeenUpdated:(LCIMMessage *)message reason:(LCIMMessagePatchedReason * _Nullable)reason;
+ - (void)conversation:(LCIMConversation *)conversation messageHasBeenRecalled:(LCIMRecalledMessage *)message reason:(LCIMMessagePatchedReason * _Nullable)reason;
@end
消息更新与消息回撤被分离为两个事件,同时增加了 reason
用来获取被服务端强制修改的原因。
@protocol LCIMClientDelegate <NSObject>
- - (void)conversation:(LCIMConversation *)conversation didUpdateAt:(NSDate * _Nullable)date byClientId:(NSString * _Nullable)clientId updatedData:(NSDictionary * _Nullable)data;
+ - (void)conversation:(LCIMConversation *)conversation didUpdateAt:(NSDate * _Nullable)date byClientId:(NSString * _Nullable)clientId updatedData:(NSDictionary * _Nullable)updatedData updatingData:(NSDictionary * _Nullable)updatingData;
@end
新增 updatingData
参数,用来获取原始更新数据。
@interface LCIMClient : NSObject
// 不再需要
- + (void)setUnreadNotificationEnabled:(BOOL)enabled;
- - (LCIMClientStatus)status;
+ @property (nonatomic, readonly) LCIMClientStatus status;
- - (nullable instancetype)initWithClientId:(NSString *)clientId
+ - (nullable instancetype)initWithClientId:(NSString *)clientId error:(NSError * __autoreleasing *)error
- - (nullable instancetype)initWithClientId:(NSString *)clientId tag:(NSString * _Nullable)tag
+ - (nullable instancetype)initWithClientId:(NSString *)clientId tag:(NSString * _Nullable)tag error:(NSError * __autoreleasing *)error
- - (nullable instancetype)initWithUser:(LCUser *)user
+ - (nullable instancetype)initWithUser:(LCUser *)user error:(NSError * __autoreleasing *)error
- - (nullable instancetype)initWithUser:(LCUser *)user tag:(NSString * _Nullable)tag
+ - (nullable instancetype)initWithUser:(LCUser *)user tag:(NSString * _Nullable)tag error:(NSError * __autoreleasing *)error
@end
@interface LCIMMessage : NSObject <NSCopying, NSCoding>
// 不再需要
- @property (nonatomic, assign, readonly) BOOL transient;
@end