腾讯云即时通讯(三)-----自定义消息

腾讯云即时通讯(三)-----自定义消息,第1张

腾讯云IM的sdk中主要提供了 以下几个消息

TIMTextElem  (文本消息)

TIMImageElem  (图片消息)

TIMFileElem  (文件消息)

TIMSoundElem (语音消息)

TIMLocationElem  (地理位置)

TIMFaceElem  (表情消息类型)

TIMVideoElem (微视频消息)

TIMUGCElem  (UGC视频)

一般来说这些消息类都可以满足我们的需求,然而产品和boss 才是老大,他们定方案了,苦逼的程序员还得费力去实现.

这个时候自定义消息就派的上用场了.我们先来来看看这个自定义的消息类  TIMCustomElem

注释已经很明显 主要是有个属性 是NSData 类型的  ,就是我们需要把自定义的消息封装转化成NSData传递过去.

楼主的需求中是需要自定义个消息,展示订单信息,需要显示下单者的联系方式 ,地址信息 收货人 ,商品图片,商品价格,商品名等信息

构造过程

构造后的消息体形式为

这样自定义的消息插入就成功了,但是要把自定义的消息正确显示在界面上还要自定义一个消息显示的cell类

我们在 ChatTableViewCell增加一个类ChatCustomOrderTableViewCell 让它继承于ChatBaseTableViewCell

//然后实现该这个类

//遇到的坑是之前设置约束时使用相对于兄弟控件来布局一直不正确,后来采用这种死板的布局才达到要求。。。

Object-c的一个方法可以包含多个参数,除了第一个参数外,后面的所有参数都要写名字,这一点和其他的语言有很大的不同。

多个参数的写法

(方法的数据类型) 函数名: (参数1数据类型) 参数1的数值的名字 参数2的名字: (参数2数据类型) 参数2值的名字 ….

举个例子,一个方法的定义:

-(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName

实现这个函数的时候:

-(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName{

大儿子 = myOldestKidName

二儿子 = mySecondOldestKidName

三儿子 = myThirdOldestKidName

}

调用的时候:

Kids *myKids = [[Kids alloc] init]

[myKids setKids: @”张大力” secondKid: @”张二力” thirdKid: @”张小力”]

而如果你用c#写这个方法,大致的写法可能是

public void setKids( string myOldestKidName, string mySecondOldestKidName, string myThirdOldestKidName)

{

}

调用的时候大概的写法可能是:

Kids myKids = new Kids()

myKids.setKids (“张大力”, “张二力”, “张小力”)

明白了吧?其实不怎么难看懂。

基本上,如果你能了解下面这段代码的转换关系,你Objective-C的语法也就懂了八成了:

[[[MyClass alloc] init:[foo bar]] autorelease]

转换成C#或者Java的语法也就是:

MyClass.alloc().init(foo.bar()).autorelease()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6738059.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存