iOS音视频(直播 音频 视频)原理篇iOS开发交流平台

【如何快速的开发一个完整的iOS直播app】(礼物篇)

2017-01-07  本文已影响3561人  袁峥

搭建礼物列表

礼物模型设计

礼物模型

@interface XMGGiftItem : NSObject

// 礼物ID
@property (nonatomic, assign) NSInteger giftId;

// 用户模型:记录哪个用户发送
@property (nonatomic, strong) XMGUserItem *user;

// 礼物名称
@property (nonatomic, strong) XMGUserItem *giftName;

// 礼物个数,用来记录礼物的连击数
@property (nonatomic, assign) NSInteger giftCount;

// 发送哪个房间
@property (nonatomic, strong) NSString *roomKey;

+ (instancetype)giftWithGiftId:(NSInteger)giftId userId:(NSInteger)userId giftCount:(NSInteger)giftCount roomKey:(NSString *)roomKey;

@end


+ (instancetype)giftWithGiftId:(NSInteger)giftId giftCount:(NSInteger)giftCount roomKey:(NSString *)roomKey giftName:(NSString *)giftName
{
    XMGGiftItem *item = [[self alloc] init];
    item.giftId = giftId;
    item.user = [[XMGUserItem alloc] init];
    // ID一样,模拟只有一个用户
    item.user.id = 1;
    item.user.userName = @"用户1";
    item.giftCount = giftCount;
    item.roomKey = roomKey;
    item.giftName = giftName;
    return item;

}


监听礼物点击

点击礼物的时候,发送礼物

    // 发送礼物
    SocketIOClient *socket = [SocketIOClient shareSocketIOClient];
    
    XMGGiftItem *gift = [XMGGiftItem giftWithGiftId:sender.tag userId:socket.user.id giftCount:1 roomKey:socket.roomKey];
    
    [socket emit:@"gift" with:@[gift.mj_keyValues]];

三、礼物界面监听礼物发送

   // 监听礼物
    SocketIOClient *socket = [SocketIOClient shareSocketIOClient];
    
    [socket on:@"gift" callback:^(NSArray * _Nonnull data, SocketAckEmitter * _Nonnull ask) {
        NSLog(@"接收到礼物%@",data);
        XMGGiftItem *item = [XMGGiftItem mj_objectWithKeyValues:data[0]];
        
        // 显示礼物动画
        [self setupGiftAnim:item];
    }];

四、设置礼物动画

{
if (_giftQueue == nil) {
_giftQueue = [NSMutableArray array];
}
return _giftQueue;
}

```

*   3.判断是否是连发礼物
    * 3.1 遍历礼物队列中所有礼物,判断当前接收的礼物与之前礼物是否有相同的UserID和相同的礼物ID。
    * 3.2 如果有相同的UserID和相同的礼物ID,就表示是连发礼物,,把礼物模型的礼物总数+1.
    * 3.3 不需要把连发礼物添加到礼物队列中,因为只要是连发礼物就表示之前已经有相同的礼物,会和之前礼物共用同一个礼物View,不需要创建新的礼物View.
    * 3.4 因此只要是连发礼物,就直接return,不做操作.

```

pragma mark - 判断当前接收礼物是否属于连发礼物

上一篇下一篇

猜你喜欢

热点阅读