直播间送礼物逻辑

要想实现直播间的赠送礼物的功能,首先需要理解赠送礼物的机制;

实际上赠送礼物也是向聊天室里边的所有人发送一条消息,当然这条消息是你提前定义好的一个礼物消息类如下:

@interface GiftMessage : RCMessageContent

/*

* 类型 type可以设置为:   0 玫瑰,1,心 2,棒棒糖  等等

*/

@property(nonatomic, copy) NSString *type;

当你要发送那类礼物的时间就是向聊天室内的所有人发送了这样一条消息,在接受消息的方法中需要判断消息类型,如果是礼物类则判断礼物类型,然后选择相应的礼物图片做我们想要的动画效果:

- (void)didReceiveMessageNotification:(NSNotification *)notification {

__block RCMessage *rcMessage = notification.object;

MessageModel *model = [[MessageModel alloc] initWithMessage:message];

if ([model.content isMemberOfClass:[GiftMessage class]])

{

GiftMessage *message2 = (RCGiftMessage *)model.content;

//   任务

[self creatGiftAnimation:[_imgNameArray objectAtIndex:message2.type.intValue] CountOfImg:[_countOfImgArray objectAtIndex:message2.type.intValue] sendGiftUser:message2 giftName:[_giftNameArray objectAtIndex:message2.type.intValue]];//调用礼物动画方法

}

}

要注意的是,当用户不停的发送的礼物的时间,动画有可能会重叠,所以采用了gcd中的异步串行队列来解决这个问题,首先实例化一个dispatch_queue_t serialQueue;

serialQueue = dispatch_queue_create("serial", DISPATCH_QUEUE_SERIAL);

当收到礼物消息的时间将消息添加到队列中:

dispatch_block_t taskBlock = ^{

// 延迟的意图在于演示多任务在串行队列中依次执行(FIFO原则)

[NSThread sleepForTimeInterval:5];

NSLog(@"Task1-->%@",[NSThread currentThread]);

dispatch_async(dispatch_get_main_queue(), ^{

//可以将动画方法放在此处,每5秒执行一次动画,可以避免动画重叠问题

});

};

dispatch_async(serialQueue, taskBlock);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,391评论 30 472
  • 一、在后台工作量少 当用户没有主动使用你的应用程序时,系统会将其转换为背景状态。该系统最终可能会暂停您的应用程序,...
    弗利撒阅读 4,423评论 1 0
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 7,122评论 0 35
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,833评论 19 139
  • 每年都按照惯例写一篇短文来纪念一下过去,规划一下新的一年要走的路。同样每年给自己下的目标没有几样是完成的,让自己哭...
    半简开阅读 2,372评论 0 0

友情链接更多精彩内容