设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 7687|回复: 12
打印 上一主题 下一主题

ios 透明通道问题

[复制链接]

8

主题

41

帖子

144

积分

注册会员

Rank: 2

积分
144
跳转到指定楼层
楼主
发表于 2014-8-13 12:20:40 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 Crystal 于 2014-8-13 12:20 编辑

  1. - (void)viewDidLoad
  2. {
  3.     [super viewDidLoad];
  4.    
  5.     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AnyChatNotifyHandler:) name:@"ANYCHATNOTIFY" object:nil];
  6.     anychat = [[AnyChatPlatform alloc] init];
  7.     anychat.transDataDelegate = self;
  8.     anychat.notifyMsgDelegate = self;
  9.     anychat.textMsgDelegate = self;
  10.     anychat.userInfoDelegate = self;
  11.     anychat.stateChangeDelegate = self;
  12.    
  13.     [AnyChatPlatform InitSDK:0];
  14. }

  15. -(void) buttonTap
  16. {
  17.     //省略 data的获取,data不为nil
  18.     int transResult = [AnyChatPlatform TransBuffer:_dwUserId :data ];
  19.     int exResult = [AnyChatPlatform TransBufferEx:_dwUserId :data :0 :0 :0];
  20. }

  21. // 透明通道回调函数
  22. - (void) OnAnyChatTransBufferCallBackint) dwUserid : (NSData*) lpBuf
  23. {
  24.     if (_dwUserId == dwUserid) {
  25.         NSLog(@"+++++++++++++++%@",lpBuf);
  26.     }
  27. }

  28. // 透明通道数据扩展回调函数
  29. - (void) OnAnyChatTransBufferExCallBackint) dwUserid : (NSData*) lpBuf : (int) wParam : (int) lParam : (int) dwTaskId
  30. {
  31.     int i = dwUserid;
  32. }

  33. // 文件传输回调函数
  34. - (void) OnAnyChatTransFileCallBackint) dwUserid : (NSString*) lpFileName : (NSString*) lpTempFilePath : (int) dwFileLength : (int) wParam : (int) lParam : (int) dwTaskId
  35. {
  36.     int i = dwUserid;
  37. }

  38. // SDK Filter 通信数据回调函数
  39. - (void) OnAnyChatSDKFilterDataCallBackNSData*) lpBuf
  40. {
  41.    int i = 0;
  42. }
复制代码
以上代码为调用透明通道的代码


但是并没有进入回调方法,是哪里出现问题了吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

4

主题

41

帖子

278

积分

中级会员

Rank: 3Rank: 3

积分
278
13#
发表于 2014-9-3 12:55:20 | 只看该作者
本帖最后由 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];        //发信息
}




回复 支持 反对

使用道具 举报

8

主题

41

帖子

144

积分

注册会员

Rank: 2

积分
144
12#
 楼主| 发表于 2014-9-3 11:43:01 | 只看该作者
chenxs 发表于 2014-8-18 17:40
A 发数据给B时,接收方B才会触发AnyChatTransDataDelegate代理里的方法,而A是不会 触发的。

我是B接收 ...

这些只有接收啊,没有发送数据的代码啊,A方代码呢
回复 支持 反对

使用道具 举报

4

主题

41

帖子

278

积分

中级会员

Rank: 3Rank: 3

积分
278
11#
发表于 2014-8-18 17:40:25 | 只看该作者
本帖最后由 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];
}

回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
10#
发表于 2014-8-18 10:47:58 | 只看该作者
Crystal 发表于 2014-8-16 18:24
没有触发方法会和方法体有关吗?

没有关系。方法都没有触发的话,有可能两个原因:
一、发送问题。调试方法:ios发送,用接收没问题android端或pc端接收。
二、接收问题:调试方法:用接收没问题android端或pc端发送,ios接收。
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9080

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9080
9#
发表于 2014-8-18 09:39:18 | 只看该作者
您好,您可以尝试用BRAnyChatSDKDemo.exe向iOS平台发送一个TransBuffer指令,看iOS这边是否可以收到?
回复 支持 反对

使用道具 举报

8

主题

41

帖子

144

积分

注册会员

Rank: 2

积分
144
8#
 楼主| 发表于 2014-8-16 18:24:15 | 只看该作者
廖斌 发表于 2014-8-13 14:42
将“if (_dwUserId == dwUserid)”注释掉看看

没有触发方法会和方法体有关吗?
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
7#
发表于 2014-8-13 14:42:06 | 只看该作者
Crystal 发表于 2014-8-13 14:36
都不会触发的哦

将“if (_dwUserId == dwUserid)”注释掉看看
回复 支持 反对

使用道具 举报

8

主题

41

帖子

144

积分

注册会员

Rank: 2

积分
144
6#
 楼主| 发表于 2014-8-13 14:36:54 | 只看该作者
admin 发表于 2014-8-13 14:29
您好,A调用TransBuffer(B, data)这个API接口向B发送透明通道数据时,只会触发B端的回调事件,不会触发A端 ...

都不会触发的哦
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9080

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9080
5#
发表于 2014-8-13 14:29:50 | 只看该作者
您好,A调用TransBuffer(B, data)这个API接口向B发送透明通道数据时,只会触发B端的回调事件,不会触发A端的回调事件,注意一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-5-20 00:40 , Processed in 0.128559 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表