AnyChat技术支持论坛
标题: ios 透明通道问题 [打印本页]
作者: Crystal 时间: 2014-8-13 12:20
标题: ios 透明通道问题
本帖最后由 Crystal 于 2014-8-13 12:20 编辑
- - (void)viewDidLoad
- {
- [super viewDidLoad];
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AnyChatNotifyHandler:) name:@"ANYCHATNOTIFY" object:nil];
- anychat = [[AnyChatPlatform alloc] init];
- anychat.transDataDelegate = self;
- anychat.notifyMsgDelegate = self;
- anychat.textMsgDelegate = self;
- anychat.userInfoDelegate = self;
- anychat.stateChangeDelegate = self;
-
- [AnyChatPlatform InitSDK:0];
- }
- -(void) buttonTap
- {
- //省略 data的获取,data不为nil
- int transResult = [AnyChatPlatform TransBuffer:_dwUserId :data ];
- int exResult = [AnyChatPlatform TransBufferEx:_dwUserId :data :0 :0 :0];
- }
- // 透明通道回调函数
- - (void) OnAnyChatTransBufferCallBackint) dwUserid : (NSData*) lpBuf
- {
- if (_dwUserId == dwUserid) {
- NSLog(@"+++++++++++++++%@",lpBuf);
- }
- }
- // 透明通道数据扩展回调函数
- - (void) OnAnyChatTransBufferExCallBackint) dwUserid : (NSData*) lpBuf : (int) wParam : (int) lParam : (int) dwTaskId
- {
- int i = dwUserid;
- }
- // 文件传输回调函数
- - (void) OnAnyChatTransFileCallBackint) dwUserid : (NSString*) lpFileName : (NSString*) lpTempFilePath : (int) dwFileLength : (int) wParam : (int) lParam : (int) dwTaskId
- {
- int i = dwUserid;
- }
- // SDK Filter 通信数据回调函数
- - (void) OnAnyChatSDKFilterDataCallBackNSData*) lpBuf
- {
- int i = 0;
- }
复制代码 以上代码为调用透明通道的代码
但是并没有进入回调方法,是哪里出现问题了吗?
作者: Crystal 时间: 2014-8-13 12:22
当前viewcontroller中还实现了视频连接,文字消息的传送,以上代码仅为透明通道的调用
作者: 廖斌 时间: 2014-8-13 13:38
transResult 返回值是多少?_dwUserId 是多少呢?if (_dwUserId == dwUserid) 表示什么含义,可以去掉?
作者: Crystal 时间: 2014-8-13 14:26
我只是想让进回调,_dwUserId 是不为空,并且存在用户的,transResult是等于0的
作者: admin 时间: 2014-8-13 14:29
您好,A调用TransBuffer(B, data)这个API接口向B发送透明通道数据时,只会触发B端的回调事件,不会触发A端的回调事件,注意一下。
作者: Crystal 时间: 2014-8-13 14:36
都不会触发的哦
作者: 廖斌 时间: 2014-8-13 14:42
将“if (_dwUserId == dwUserid)”注释掉看看
作者: Crystal 时间: 2014-8-16 18:24
没有触发方法会和方法体有关吗?
作者: admin 时间: 2014-8-18 09:39
您好,您可以尝试用BRAnyChatSDKDemo.exe向iOS平台发送一个TransBuffer指令,看iOS这边是否可以收到?
作者: 廖斌 时间: 2014-8-18 10:47
没有关系。方法都没有触发的话,有可能两个原因:
一、发送问题。调试方法:ios发送,用接收没问题android端或pc端接收。
二、接收问题:调试方法:用接收没问题android端或pc端发送,ios接收。
作者: chenxs 时间: 2014-8-18 17:40
本帖最后由 chenxs 于 2014-8-18 17:44 编辑
A 发数据给B时,接收方B才会触发AnyChatTransDataDelegate代理里的方法,而A是不会 触发的。
我是B接收方,叫另外一个人A发文字数据来我B方触发代理方法可以显示到结果。具体代码共享一下,看楼主有没有少了那部分。
注意一点,发送方,设置编码是UTF8,那么接收方也要是UTF8解码,不然接收方不发送方编码不一会出现乱码。
头文件:
#import "AnyChatPlatform.h"
#import "AnyChatDefine.h"
#import "AnyChatErrorCode.h"
@interface ClassName : UIViewController<AnyChatNotifyMessageDelegate,AnyChatTransDataDelegate,NSCoding>
@property (nonatomic, retain) AnyChatPlatform *cxsAnyChatPlatform;
- (void)AnyChatNotifyHandler:(NSNotification*)notify;
实现文件:
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AnyChatNotifyHandler:) name:@"ANYCHATNOTIFY" object:nil];
[AnyChatPlatform InitSDK:0];
//登录
[AnyChatPlatform Connect: GetServerIP : GetServerPort];
[AnyChatPlatform Login:UserName : Password];
//设置代理
cxsAnyChatPlatform = [[AnyChatPlatform alloc] init];
cxsAnyChatPlatform.notifyMsgDelegate = self; //basis Delegate
cxsAnyChatPlatform.transDataDelegate = self;
}
#pragma mark - AnyChatNotifyMessageDelegate 异步消息事件协议
// 连接服务器消息
- (void) OnAnyChatConnect:(BOOL) bSuccess{}
// 用户登陆消息
- (void) OnAnyChatLogin:(int) dwUserId : (int) dwErrorCode
{
[AnyChatPlatform EnterRoom:1 :nil];
}
// 用户进入房间消息
- (void) OnAnyChatEnterRoom:(int) dwRoomId : (int) dwErrorCode{}
// 房间在线用户消息
- (void) OnAnyChatOnlineUser:(int) dwUserNum : (int) dwRoomId{}
// 用户进入房间消息
- (void) OnAnyChatUserEnterRoom:(int) dwUserId{}
// 用户退出房间消息
- (void) OnAnyChatUserLeaveRoom:(int) dwUserId{}
// 网络断开消息
- (void) OnAnyChatLinkClose:(int) dwErrorCode{}
#pragma mark - AnyChatTransDataDelegate 数据传输事件协议
// 透明通道回调函数
- (void) OnAnyChatTransBufferCallBack:(int) dwUserid : (NSData*) lpBuf{
//NSLog(@"发送方的用户ID%i",dwUserid);
if (lpBuf != nil) {
NSString *aString = [[NSString alloc] initWithData:lpBuf encoding: NSUTF8StringEncoding];
NSLog(@"发送的文件内容是%@",aString);
}
}
// 透明通dwUserid数
- (void) OnAnyChatTransBufferExCallBack:(int) dwUserid : (NSData*) lpBuf : (int) wParam : (int) lParam : (int) dwTaskId{}
// 文件传输回调函数
- (void) OnAnyChatTransFileCallBack:(int) dwUserid : (NSString*) lpFileName : (NSString*) lpTempFilePath : (int) dwFileLength : (int) wParam : (int) lParam : (int) dwTaskId{}
// SDK Filter 通信数据回调函数
- (void) OnAnyChatSDKFilterDataCallBack:(NSData*) lpBuf{}
//通知中心句柄
- (void)AnyChatNotifyHandler:(NSNotification*)notify
{
NSDictionary* dict = notify.userInfo;
[cxsAnyChatPlatform OnRecvAnyChatNotify:dict];
}
作者: Crystal 时间: 2014-9-3 11:43
这些只有接收啊,没有发送数据的代码啊,A方代码呢
作者: chenxs 时间: 2014-9-3 12:55
本帖最后由 chenxs 于 2014-9-3 15:55 编辑
您好,在A方登录成功之后,就可以调用以下TransBuffer方法发了。
- (void) OnAnyChatLogin:(int) dwUserId : (int) dwErrorCode
{
NSString *stext = [[NSString alloc] initWithFormat:@"中文发送"];
NSData* sData = [stext dataUsingEncoding:NSUTF8StringEncoding];
[AnyChatPlatform TransBuffer:userID :sData]; //发信息
}
欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) |
Powered by Discuz! X3 |