2025-10-09 16:48:46 +08:00

187 lines
5.2 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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