iOS 消息服务库
概述
评论消息库是用来订阅消息的开发工具包,为开发者提供简单易用的接口,可以很方便地接收和发送消息信息。
开发准备
环境要求
- iOS8.0 及以上 iphone5 及以上
- XCode6.0 以上版本
- 支持 ARMv7、ARMv7s 或 ARM64
集成 SDK
XCode 创建一个 iOS 应用工程。
将 MuduComment.framework, MuduLibrary.framework文件拖至项目中
将 SDK 中的头文件 MuduComment.h 包含到工程中。
快速开发
一、MDCommenter(评论)类使用
1、导入头文件
#import <MuduComment/MuduComment.h>
#import <MuduLibrary/MuduLibrary.h>
//设置是否支持本地日志记录
[MDLogManager setLogEnable:NO];
//设置日志等级
[MDLogManager setLogLevel:MDLogLevel_None];
2、设置account key,若没有account key,请联系客服咨询。注:替换原来MDCommenter的静态方法。
[MDConfigure setAccountKey:@""];
3、创建评论管理对象,初始化评论对象,传入频道hash id(可从频道详情接口获取到actId)
[MDConfigure setActivityId:@"频道hashid"];
// 下面方式已弃用,请使用全局配置
//[[MDCommenter instance] initWithActId:@"频道hashid"];
4、设置登录,使用昵称和头像地址进行登录
[[MDCommenter instance] login:@"用户昵称" avatar:@"用户头像" callback:^(NSString *data, NSError *err) {
//data:OK
}];
5、注册评论消息回调监听并订阅频道
[[MDCommenter instance] setMessageDelegate:self];
delegate实现
?```objc
- (void)onReceiveError:(NSInteger)errorCode withMessage:(NSString *)message
{
//内部错误通知,根据业务进行重新登录操作
}
-(void)onReceiveMessage:(id)commenter withMessage:(NSDictionary *)message withEvent:(NSString *)event
{
//除评论消息外的其他消息
NSLog(@"message event = %@", event);
NSLog(@"message = %@", message);
}
-(void)onReceiveComment:(id)commenter withComment:(MDMessageEntity *)mesasgeEntity withEvent:(NSString *)event
{
//评论消息
NSLog(@"头像 = %@", mesasgeEntity.content.avatar);
NSLog(@"昵称 = %@", mesasgeEntity.content.username);
NSLog(@"内容 = %@", mesasgeEntity.content.message);
}
6、发布评论,需要登录后才能发布评论
[[MDCommenter instance] publishMessage:message callback:^(NSString *data, NSError *err) {
if(err == nil) {
//data:{"id":xxxx}
NSLog(@"发送成功");
} else {
//发送失败
NSLog(@"%@", err.description);
}
}];
7、退出页面时调用, 重要!
//全局销毁,包括 MDCommenter,MDActivityManager
[MDConfigure destroy];
// 下面方式已弃用,退出页面请使用全局销毁
// [[MDCommenter instance] close];
二、MDActivityManager(频道)类使用
请提前设置频道Hash ID。 [MDConfigure setActivityId:@"频道hashid"];
1、获取频道信息
/*
* realTime: 是否实时获取频道信息,设置YES会实时请求,获取当前实时直播状态;设置NO会从缓存响应中获取。
*/
[[MDActivityManager instance] activityInfo:NO withBlock:^(id manager, id _Nullable data, NSError *_Nullable error) {
if(!error){
// data kind is NSDictionary
}else{
// error
}
}];
2、获取拉流地址
// 需实现 MDActivityLiveDelegate 代理
[[MDActivityManager instance] setDelegate:self];
[[MDActivityManager instance] liveAddress];
实现MDActivityLiveDelegate
//列表直播地址
-(void)onAddress:(id)manager atListLive:(NSString *)address;
//常规直播地址, MDLiveEntity见对象说明
-(void)onAddress:(id)manager atLive:(NSArray<MDLiveEntity *> *)list;
//错误
-(void)onLiveError:(NSError *)error;
接口对象说明
MDCommenter
评论收发管理对象
成员对象属性 | 类型 | 说明 |
---|---|---|
userInfo | NSDictionary | 已登录用户信息 |
isConnect | BOOL | 消息服务是否正常连接 |
messageDelegate | id<MDMessageDelegate> |
消息接收回调代理 |
成员方法 | 功能 |
---|---|
+ (MDCommenter *)instance | 获取对象实例 |
- (void)oauth2Login:callback: | oauth2登录,需要通过与服务端交互获取ticket进行授权登录 |
- (void)login:avatar:callback: | 匿名登录(头像可选设置,不设置则为默认头像) |
- (void)loginByOther:callback: | 第三方授权平台登录(weixin/qq/weibo等) |
- (void)loginByToken:callback | 已有token登录 |
- (void)publishMessage:callback: | 发布评论消息 |
- (void)getCommentList:callback: | 获取历史评论列表 回调id类型为 MDMessageListEntity |
- (void)getToken | 获取已登录用户token |
- (void)getSessionId | 获取已登录信息session id |
- (void)reconnect | 重连,接收onReceiveError:withMessage:回调时,根据具体业务判断是否需要重连 |
- (void)close | 销毁 |
MDActivityManager
频道相关管理对象
成员对象属性 | 类型 | 说明 |
---|---|---|
activityInfo | NSDictionary | 频道信息引用 |
delegate | id<MDActivityLiveDelegate> |
获取直播拉流地址回调代理 |
成员方法 | 功能 |
---|---|
+ (MDActivityManager *)instance | 获取对象实例 |
- (void)activityInfo:withBlock: | 获取频道信息, realTime:实时获取 |
- (void)liveAddress | 获取频道直播拉流地址(包含常规直播和列表直播) |
消息类对象说明
MDMessageListEntity
评论列表对象
对象属性 | 类型 | 说明 |
---|---|---|
pageIndex | int | 当前页数 |
size | int | 每页数量 |
total | int | 消息总数 |
messageList | NSArray<MDMessage *> |
消息列表 |
MDMessageEntity
评论消息管理对象
对象属性 | 类型 | 说明 |
---|---|---|
msgType | NSString | 消息类型 |
serviceType | NSString | 服务类型 |
action | NSString | 评论功能类型 comment,danmu:评论与弹幕;highlight:弹幕高亮 |
content | MDMessage | 评论消息对象 |
MDMessage
评论消息对象
对象属性 | 类型 | 功能 |
---|---|---|
isAdmin | BOOL | 是否是管理员消息 |
msgType | int | 消息类型 |
priority | int | 优先级 |
id | int | 消息id |
userHashId | NSString | 用户hash id |
userId | int | 用户id |
dateline | NSString | 消息时间 |
username | NSString | 评论者昵称 |
message | NSString | 评论内容 |
avatar | NSString | 评论者头像 |
MDPlatformUser
第三方授权登录用户
对象属性 | 类型 | 功能 |
---|---|---|
nick | NSString | 用户昵称 |
avatar | NSString | 用户头像 |
type | MDSupportPlatform | 第三方授权平台枚举 |
Platform_Weixin | 授权平台类型:weixin | |
Platform_QQ | 授权平台类型:qq | |
Platform_Weibo | 授权平台类型:weibo | |
Platform_Dingding | 授权平台类型:dingding | |
Platform_WeixinUnion | 授权平台类型:weixin公众号 | |
Platform_Assign | 授权平台类型:其他 | |
openId | NSString | 第三方授权平台获取的openid |
phone | NSString | 手机号 |
expireTime | NSInteger | 授权过期时间戳(单位:秒) |
频道类对象说明
MDLiveEntity
直播流地址对象
对象属性 | 类型 | 功能 |
---|---|---|
lineName | NSString | |
resolutions | NSArray<MDResolutionEntity *> |
不同分辨率封装列表 |
MDResolutionEntity
不同分辨率地址
对象属性 | 类型 | 功能 |
---|---|---|
resolution | NSString | 分辨率(清晰程度)名称 |
pullAddress | NSString | 直播拉流地址 |