NIMSDK-iOS
载入中...
搜索中...
未找到
NIMCustomObject.h
浏览该文件的文档.
1//
2// NIMCustomObject.h
3// NIMLib
4//
5// Created by Netease.
6// Copyright (c) 2015年 Netease. All rights reserved.
7//
8
10
11NS_ASSUME_NONNULL_BEGIN
12/*
13 除了 SDK 预定义的几种消息类型,上层APP开发者如果想要实现更多的消息类型,不可避免需要使用自定义消息这种类型
14 由于 SDK 并不能预测上层 APP 的应用场景,所以 NIMCustomObject 采取消息透传的方式以提供给上层开发者最大的自由度
15 即 SDK 只负责发送和收取由 NIMCustomObject 中 id<NIMCustomAttachment> attachment 序列化和反序列化后的字节流
16 在发送端,SDK 获取 encodeAttachment 后得到的字节流发送至对面端
17 在接收端,SDK 读取字节流,并通过上层 APP 设置的反序列化对象进行解析 (registerCustomDecoder:)
18
19文件上传:
20 为了方便 APP 在自定义消息类型中进行文件的上传,SDK 也提供了三个接口文件上传
21 即只要 APP 实现上传相关的接口,资源的上传就可以由 SDK 自动完成
22 如需要上传资源需要实现的接口有:
23 1. - (BOOL)attachmentNeedsUpload 是否有文件需要上传,在有文件且文件没有上传成功时返回YES
24 2. - (NSString *)attachmentPathForUploading 返回需要上传的文件路径
25 3. - (void)updateAttachmentURL:(NSString *)urlString 上传成功后SDK会调用这个接口,APP 需要实现这个接口来保存上传后的URL
26 具体可以参考 DEMO 中阅后即焚的实现
27
28 */
29
30
31
32/**
33 * 自定义消息对象附件协议
34 */
35@protocol NIMCustomAttachment <NSObject>
36@required
37
38/**
39 * 序列化attachment
40 *
41 * @return 序列化后的结果,将用于透传
42 */
43- (NSString *)encodeAttachment;
44
45@optional
46#pragma mark - 上传相关接口
47/**
48 * 是否需要上传附件
49 *
50 * @return 是否需要上传附件
51 */
52- (BOOL)attachmentNeedsUpload;
53
54/**
55 * 需要上传的附件路径
56 *
57 * @return 路径
58 */
59- (NSString *)attachmentPathForUploading;
60
61/**
62 * 更新附件URL
63 *
64 * @param urlString 附件url
65 */
66- (void)updateAttachmentURL:(NSString *)urlString;
67
68#pragma mark - 下载相关接口
69/**
70 * 是否需要下载附件
71 *
72 * @return 是否需要上传附件
73 */
74- (BOOL)attachmentNeedsDownload;
75
76/**
77 * 需要下载的附件url
78 *
79 * @return 附件url
80 * @discussion 如果当前字段是云信的 http url 地址,那么需要调用 id<NIMResourceManager> 中 normalizeURLString: 方法将这个地址进行转 https 和 cdn 加速格式
81 */
82- (NSString *)attachmentURLStringForDownloading;
83
84/**
85 * 需要下载的附件本地路径
86 *
87 * @return 附件本地路径
88 * @discussion 上层需要保证路径的
89 */
90- (NSString *)attachmentPathForDownloading;
91
92@end
93
94
95
96/**
97 * 自定义消息对象附件序列化协议
98 */
99@protocol NIMCustomAttachmentCoding<NSObject>
100@required
101
102/**
103 * 反序列化
104 *
105 * @param content 透传的自定义消息
106 *
107 * @return 自定义消息附件
108 */
109- (nullable id<NIMCustomAttachment>)decodeAttachment:(nullable NSString *)content;
110@end
111
112
113/**
114 * 用户自定义消息对象
115 */
116@interface NIMCustomObject : NSObject<NIMMessageObject>
117
118/**
119 * 用户自定义附件
120 * @discussion SDK负责将attachment通过encodeAttachment接口序列化后的结果进行透传
121 */
122@property(nullable, nonatomic, strong) id<NIMCustomAttachment> attachment;
123
124
125/**
126 * 注册自定义消息解析器
127 *
128 * @param decoder 自定义消息解析器
129 * @disucssion 如果用户使用自定义消息类型,就需要注册自定义消息解析器,负责将透传过来的自定义消息反序列化成上层应用可识别的对象
130 */
131+ (void)registerCustomDecoder:(id<NIMCustomAttachmentCoding>)decoder;
132
133@end
134
135
136NS_ASSUME_NONNULL_END
Definition: NIMCustomObject.h:116
id< NIMCustomAttachment > attachment
Definition: NIMCustomObject.h:122
Definition: NIMMessageObjectProtocol.h:20