一对一交友系统源码,v聊富聊源码如何实现实时通讯功能
直播行业的稳步发展和趋于饱和的市场大环境,导致人们开始疲于接受一对多的直播模式。为了促进直播的多元化发展,新的一对一直播模式正在逐渐兴起。相比传统的直播,一对一直播可以进行视频聊天,私密性强且互动性高。一对一交友系统源码、v聊富聊源码开始成为各大投资开发商的“新宠”,那么在开发过程中,它又是怎样实现实时通讯功能的呢?
1.发送方
首先,利用AFN进行网络请求,以获取到需要的数据参数。然后通过极光IM将Json字符串,json里面会有一个status参数用来区分本条私信具体功能(例如邀请、接受、拒绝、赴约等,上述代码以邀请为例),私信过程中可以选择是否给对方推送该条私信消息,并且可以自定义推送内容,私信发送成功之后展示邀请用户需要展示的界面。
NSString *url = [purl stringByAppendingFormat:@"?service=接口名”];NSDictionary *check = @{@"uid":[Config getOwnID],@"token":[Config getOwnToken],@"touid":_userID,@"type":@"0",@"content":[NSString stringWithFormat:@"%@邀请你进行1v1私聊",[Config getOwnNicename]],@"status":@"1"};AFHTTPSessionManager *session = [AFHTTPSessionManager manager];[session POST:url parameters:check progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {NSNumber *number = [responseObject valueForKey:@"ret"];if([number isEqualToNumber:[NSNumber numberWithInt:200]]){NSArray *data = [responseObject valueForKey:@"data"];NSString *code = [NSString stringWithFormat:@"%@",[data valueForKey:@"code"]];if([code isEqual:@"0"]){NSDictionary *info = [[data valueForKey:@"info"] firstObject];NSString *json = [info valueForKey:@"json"];[JMSGConversation createSingleConversationWithUsername:[NSString stringWithFormat:@"%@%@",JmessageName,self.userID]completionHandler:^(id resultObject, NSError *error) {JMSGMessage *message = nil;JMSGOptionalContent *option = [[JMSGOptionalContent alloc]init];NSString *active = minstr([info valueForKey:@"active"]);if ([active isEqual:@"0"]) {//发推送option.noSaveNotification = NO;option.customNotification.title = @"云豹1v1";option.customNotification.alert = [NSString stringWithFormat:@"%@邀请你进行1v1私聊",[Config getOwnNicename]];option.customNotification.enabled = YES;}else{//不推option.noSaveNotification = YES;}JMSGTextContent *textContent = [[JMSGTextContent alloc] initWithText:json];//添加附加字段[textContent addStringExtra:[Config getavatar] forKey:@"avatar"];message = [resultObject createMessageWithContent:textContent];[resultObject sendMessage:message optionalContent:option];[MBProgressHUD showSuccess:@"发送成功"];//请求接口加次数以便服务端统计接听率[self addcount];__weak typeof(self) weakself = self;SendInvitationAlert *alert = [[SendInvitationAlert alloc] initWithTouid:_userID icon:self.icon userName:self.chatname refuseBlock:^(NSString *uid) {[weakself sendCancelIM];} andAfterThirtySecondsBlock:^(NSString *uid) {UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"是否预约" message:_yuyueMsg preferredStyle:UIAlertControllerStyleAlert];[alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {}]];[alert addAction:[UIAlertAction actionWithTitle:@"预约" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {[weakself yuyue];}]];[weakself presentViewController:alert animated:YES completion:nil];}];[alert show];}];
}else if ([code isEqual:@"1001"]){UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"您的钻石不足" message:@"快快去充值吧" preferredStyle:UIAlertControllerStyleAlert];[alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {}]];[alert addAction:[UIAlertAction actionWithTitle:@"去充值" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {CoinVeiw *coin = [[CoinVeiw alloc] init];[[TCBaseAppDelegate sharedAppDelegate] pushViewController:coin animated:YES];}]];[self presentViewController:alert animated:YES completion:nil];}else{NSString *msg = [NSString stringWithFormat:@"%@",[data valueForKey:@"msg"]];[HUDHelper myalert:msg];}}} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {}];
2.接收方
考虑到消息需要全局接收,可以在VC公共父类或者tabbar里面接收,接收到之后先进行json解析,获取到数据,然后根据上文提到的status进行UI展示、事件处理。
-(void)onReceiveMessage:(JMSGMessage *)message error:(NSError *)error{unRead = [[JMSGConversation getAllUnreadCount] intValue];[self labeiHid];NSString *jsonstr = [message.content valueForKey:@"text"];NSDictionary *dicc = [jsonstr JSONValue];NSString *status = minstr([dicc valueForKey:@"status"]);NSString *fromName = message.fromName;fromName = [fromName stringByReplacingOccurrencesOfString:JmessageName withString:@""];if (![status isEqual:@"0"]) {[self removeCommentsView];}if ([status isEqual:@"1"]) {//正在直播不接收消息if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isLiveing"]) {return;}NSLog(@"收到邀请消息");//播放声音[self playTheRing];ReceiveInvitationAlert *alert = [[ReceiveInvitationAlert alloc] initWithIcon:minstr([dicc valueForKey:@"avatar"]) userName:minstr([dicc valueForKey:@"user_nicename"]) agreeBlock:^(NSString *uid) {[self createRoomWithTouid:fromName];[self stopPlayAndRemovePlayer];} refuseBlock:^(NSString *uid) {[self replyWithTouid:fromName content:[NSString stringWithFormat:@"%@拒绝了你的1v1私聊请求",[Config getOwnNicename]] status:@"3"];[self stopPlayAndRemovePlayer];} andAfterThirtyMinutesBlock:^(NSString *uid) {[self stopPlayAndRemovePlayer];}];alert.tag = [fromName integerValue];[alert show];}else if ([status isEqual:@"2"]){//主播同意并开播之后收到,进直播间观看 (请求被同意)}else if ([status isEqual:@"3"]){//1v1请求被拒绝}else if ([status isEqual:@"4"]){//收到赴约请求}else if ([status isEqual:@"5"]){//对方同意赴约请求,去开播,此时我是主播,对方是用户}else if ([status isEqual:@"6"]){//赴约请求被拒绝,我是主播,对方是用户}else if ([status isEqual:@"7"]){//用户取消1v1申请}else if ([status isEqual:@"8"]){//用户取消赴约}
}
以上源码展现了一对一交友源码、v聊富聊源码实现实时通讯功能的方式,所以它们在市场上大受欢迎也不是没有原因的,一对一的模式无疑为人们提供了足够放松的交流空间,发展前景也十分可观。
声明:本篇文章为小编原创文章,转载请注明出处及作者。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
