187 lines
5.2 KiB
Objective-C
187 lines
5.2 KiB
Objective-C
//
|
||
// NIMChatroomEnterRequest.h
|
||
// NIMLib
|
||
//
|
||
// Created by Netease.
|
||
// Copyright © 2015 Netease. All rights reserved.
|
||
//
|
||
|
||
#import <Foundation/Foundation.h>
|
||
#import "NIMChatroomManagerProtocol.h"
|
||
|
||
NS_ASSUME_NONNULL_BEGIN
|
||
|
||
|
||
|
||
/**
|
||
* 获取聊天室地址回调
|
||
*/
|
||
typedef void(^NIMRequestChatroomAddressesCallback)(NSError * __nullable error,NSArray<NSString *> * __nullable addresses);
|
||
|
||
/**
|
||
* 获取聊天室地址方法
|
||
*/
|
||
typedef void(^NIMRequestChatroomAddressesHandler)(NSString *roomId,NIMRequestChatroomAddressesCallback callback);
|
||
|
||
|
||
|
||
/**
|
||
* 聊天室独立模式
|
||
*/
|
||
@interface NIMChatroomIndependentMode : NSObject
|
||
|
||
/**
|
||
* 独立模式下的用户名
|
||
* @discussion 设置为 nil 情况下,SDK 将使用匿名账号进行登录。在匿名模式下,NIMChatroomEnterRequest 必须设置昵称和头像信息
|
||
*/
|
||
@property (nullable,nonatomic,copy) NSString *username;
|
||
|
||
/**
|
||
* 如果username为nil,则使用匿名登录,此变量决定了匿名账号。如果为nil,则由SDK自动生成
|
||
*/
|
||
@property (nullable,nonatomic,copy) NSString *anonName;
|
||
|
||
/**
|
||
* 独立模式下的 Token
|
||
* @discussion 当用户名为空时,token 无效
|
||
*/
|
||
@property (nullable,nonatomic,copy) NSString *token;
|
||
|
||
/**
|
||
* 聊天室 AppKey, 可选填, 如果不填则使用云信IM AppKey
|
||
*/
|
||
@property (nullable,nonatomic,copy) NSString *chatroomAppKey;
|
||
|
||
/**
|
||
* 注册获取聊天室地址的回调方法
|
||
*
|
||
* @param handler 获取聊天室地址信息的方法
|
||
* @discussion 在进入聊天室和刷新聊天室 IP 时,SDK 都会主动调用这个回调方法,并传入相应的两个参数 `roomId` 和 `callback`。
|
||
* 当前回调接口要求上层使用 `roomId` 走自己的网络请求获取对应聊天室地址并通过 callback 回调给 SDK。
|
||
* 需要注意的是无论请求是否成功,都需要通过 callback 进行回调,否则进入聊天室请求将会一直等待。同时此接口只需注册一次即可,多次注册将使用后者覆盖前者。
|
||
*
|
||
* 参考代码:
|
||
*
|
||
* [NIMChatroomIndependentMode registerRequestChatroomAddressesHandler:^(NSString * _Nonnull roomId, NIMRequestChatroomAddressesCallback _Nonnull callback) {
|
||
* [YourHTTPService request:roomId completion:^(NSError *error,NSArray *addresses)
|
||
* {
|
||
* //无论请求是否成功,都需要进行回调
|
||
* if(callback)
|
||
* {
|
||
* callback(error,addresses);
|
||
* }
|
||
* }];
|
||
* }];
|
||
*
|
||
*/
|
||
+ (void)registerRequestChatroomAddressesHandler:(NIMRequestChatroomAddressesHandler)handler;
|
||
|
||
@end
|
||
|
||
typedef NS_ENUM(NSInteger, NIMChatroomLoginAuthType) {
|
||
NIMChatroomLoginAuthTypeDefault = 0,
|
||
NIMChatroomLoginAuthTypeDynamicToken = 1,
|
||
NIMChatroomLoginAuthTypeThirdPart = 2,
|
||
};
|
||
|
||
/**
|
||
* 进入聊天室请求
|
||
*/
|
||
@interface NIMChatroomEnterRequest : NSObject
|
||
|
||
/**
|
||
* 聊天室Id
|
||
*/
|
||
@property (nonatomic,copy) NSString *roomId;
|
||
|
||
/**
|
||
* 聊天室昵称
|
||
* @discussion 上层可以自主设置在聊天室内的昵称,没有设置则使用用户本身的信息
|
||
*/
|
||
@property (nullable,nonatomic,copy) NSString *roomNickname;
|
||
|
||
/**
|
||
* 聊天室头像
|
||
* @discussion 上层可以自主设置在聊天室内的头像,没有设置则使用用户本身的信息
|
||
*/
|
||
@property (nullable,nonatomic,copy) NSString *roomAvatar;
|
||
|
||
/**
|
||
* 本人的聊天室成员信息拓展字段,仅对当次进入有效
|
||
*/
|
||
@property (nullable,nonatomic,copy) NSString *roomExt;
|
||
/**
|
||
* 聊天室事件通知拓展字段
|
||
*/
|
||
@property (nullable,nonatomic,copy) NSString *roomNotifyExt;
|
||
/**
|
||
* 登录标签,可以设置多个,json_array格式,例子:["tag1", "tag2"]
|
||
*/
|
||
@property (nullable,nonatomic,copy) NSString *tags;
|
||
/**
|
||
* 登录登出通知的目标标签,是一个标签表达式,见TagCalculator和TagPattern
|
||
*/
|
||
@property (nullable,nonatomic,copy) NSString *notifyTargetTags;
|
||
|
||
|
||
/**
|
||
* 聊天室重连次数,默认为三次
|
||
* @discussion 设置成 0 后一旦一次连接失败后,SDK 将不在重试。 APP 可以根据自己的需求进行设置
|
||
*/
|
||
@property (nonatomic,assign) NSInteger retryCount;
|
||
|
||
|
||
/**
|
||
* 聊天室独立模式
|
||
* @discussion 默认为 nil,即聊天室登录需要依赖 IM 登录,只有 IM 登录后才能够登录聊天室。设置后可以在不依赖 IM 通道的情况下进行登录
|
||
*/
|
||
@property (nullable,nonatomic,strong) NIMChatroomIndependentMode *mode;
|
||
|
||
/**
|
||
* 鉴权方式
|
||
*/
|
||
@property (nonatomic, assign) NIMChatroomLoginAuthType loginAuthType;
|
||
|
||
/**
|
||
* 扩展字段
|
||
*/
|
||
@property (nullable,nonatomic,strong) NSString *loginExt;
|
||
|
||
/**
|
||
* 动态token回调
|
||
*/
|
||
@property (nonatomic, strong) NIMProvideChatroomDynamicTokenHandler dynamicTokenHandler;
|
||
|
||
/**
|
||
* 坐标x
|
||
*/
|
||
@property (nonatomic, strong) NSDecimalNumber *locationX;
|
||
|
||
/**
|
||
* 坐标y
|
||
*/
|
||
@property (nonatomic, strong) NSDecimalNumber *locationY;
|
||
|
||
/**
|
||
* 坐标z
|
||
*/
|
||
@property (nonatomic, strong) NSDecimalNumber *locationZ;
|
||
|
||
/**
|
||
* 订阅的消息的距离
|
||
*/
|
||
@property (nonatomic, strong) NSDecimalNumber *distance;
|
||
|
||
/**
|
||
* 对某些资料内容另外的反垃圾的业务ID
|
||
*/
|
||
@property (nullable, nonatomic, copy) NSString *antispamBusinessId;
|
||
|
||
@end
|
||
|
||
|
||
|
||
|
||
|
||
NS_ASSUME_NONNULL_END
|