阿里云直播和环信聊天开发心得体会

最近公司应公司要求完成阿里云直播和环信聊天功能,学习到了许多之前未知的知识.

1.环信问题及解决方案

1.首先说环信遇到的问题,环信导入 SDK 时,

导入动态库,导入之后发现工程中环信 SDK 的 demo 中出现许多警告,例如下面这种情况

这种警告的解决方式如下图所示

轻松的解决了警告的问题.

2.当做到聊天界面时遇到一个问题,环信服务器不提供保存用户头像和昵称的功能,然后我想到用服务器保存用户的头像和昵称,但是经过思考之后,如果大量的用户同时拉取服务器的用户信息,并发执行可能给服务器造成压力,所以经过考虑还是选择了使用环信的消息扩展的方式来显示相应的头像和昵称.http://www.jianshu.com/p/cd7745b6bc8a 此链接为消息拓展的使用方法.

本人是在发送消息的方法中,将 定义一个ext 字典然后将 字典发送到环信服务器.具体方法如下:

ext =@{@"username":[[EMClientsharedClient]currentUsername],@"nickname":[LZUserdefaultUser].userInfoModel.nickname,@"imageUrl":[LZUserdefaultUser].userInfoModel.avatar};

EMMessage*message = [EaseSDKHelpersendTextMessage:text

                                                                                             to:self.conversation.conversationId

                                                                          messageType:[self_messageTypeFromConversationType]

                                                                             messageExt:ext];

在接收信息时,取出 message 类的 ext 属性,然后将其赋给一个字典

NSDictionary*dict = message.ext;

然后将其相应的数据赋予给 model 的相应属性,具体操作如下:

NSString*nickname = dict[@"nickname"];

if(nickname.length>0) {

model.nickname= nickname;

}

NSString*imageUrl = dict[@"imageUrl"];

if(imageUrl.length>0) {

model.avatarURLPath= imageUrl;

}

如果有特殊需求的情况下,也可以将数据保存到本地,如果要用直接从缓存中取,如果缓存中没有则取服务器返回的相应数据.

3.下面简单介绍几个 EASEUI 的方法:

(1)在EaseMessageViewController中的

-- (void)sendTextMessage:(NSString*)text;方法为发送文本消息

- (void)_loadMessagesBefore:(NSString*)messageId  count:(NSInteger)count  append:(BOOL)isAppend;加载历史聊天记录

- (void)didReceiveMessages:(NSArray*)aMessages;接收消息的代理回调方法(处理实时接收消息)

4.在做直播此种类型的聊天时,我们选择的是环信的聊天室功能,通过后台服务器创建聊天室,然后将聊天室 id 返回给我们,我们然后进入聊天室.还可以选择群组的方式.但这两种方式同时在线人数都有限制,聊天室的最大人数为5000人,群组的聊天室最大人数为2000人.这点大家要注意下.

2.阿里云直播问题及解决方案

1.阿里云 SDK 我也是通过添加动态库的形势添加的,在使用 SDK 时,首先要遵循直播的代理

[AliVcMediaPlayersetAccessKeyDelegate:self];

然后将相应的Key 和 Secret 与其进行绑定

- (AliVcAccesskey*)getAccessKeyIDSecret

{

AliVcAccesskey* accessKey = [[AliVcAccesskeyalloc]init];

accessKey.accessKeyId=kAliVideoAccessKeyID;

accessKey.accessKeySecret=kAliVideoaccessKeySecret;

returnaccessKey;

}

然后请求服务器,将获取到的拉流地址请求阿里云服务器,

@try{

_mPlayer= [[AliVcMediaPlayeralloc]init];

[_mPlayercreate:[UIView new]];

[self addPlayerObserver];

_mPlayer.mediaType=MediaType_AUTO;

_mPlayer.scalingMode=scalingModeAspectFitWithCropping;

_mPlayer.timeout=15000;

_mPlayer.dropBufferDuration=8000;

AliVcMovieErrorCodeerr = [_mPlayerprepareToPlay:[NSURLURLWithString:urlString]];

if(err !=ALIVC_SUCCESS) {

NSLog(@"preprare failed,error code is %d",(int)err);

return;

}

_mPlayer.muteMode=NO;

err = [_mPlayerplay];

if(err !=ALIVC_SUCCESS) {

NSLog(@"play failed,error code is %d",(int)err);

return;

}

}@catch(NSException *exception) {

}@finally{

}

我没有先创建相应的播放的 view, 我们要求当可以开始播放之后然后才显示播放界面,如果开始就创建播放视图,则刚开始的时候会出现黑屏的情况,我是在如下方法里添加的播放视图

- (void)OnVideoPrepared:(NSNotification*)notification {

[[UIApplicationsharedApplication] setIdleTimerDisabled : YES];

_mPlayer.view=_headView;

[self hideLoadingIndicators];

}

这样就可以避免黑屏的情况.

2.由于老板要求用录像机进行录制视频并进行推流,所以我们选择的推流工具是在电脑上安装OBS Studio,这款软件用起来还是挺不错的.用法也比较简单.

首先点击设置

然后可通过设置推流的 url

设置完之后在左下角可选择相应的录制方式

设置完之后,直接开始串流即可.用法简单.

3.完成开发之后上传 App Store 出现的问题及解决方案

1.首先是上传 App Store出现

ERROR ITMS-90207: "Invalid Bundle. The bundle at '****' does not contain a bundle executable.错误

动态库出现问题,我采用的方法处理方法是

添加脚本步骤

新建脚本

拷贝下面脚本至新建脚本中

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

# This script loops through the frameworks embeddedinthe application and

# removes unused architectures.

find"$APP_PATH"-name'*.framework'-type d |whileread -r FRAMEWORK

do

FRAMEWORK_EXECUTABLE_NAME=$(defaults read"$FRAMEWORK/Info.plist"CFBundleExecutable)

FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"

echo"Executable is $FRAMEWORK_EXECUTABLE_PATH"

EXTRACTED_ARCHS=()

forARCHin$ARCHS

do

echo"Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"

lipo -extract"$ARCH""$FRAMEWORK_EXECUTABLE_PATH"-o"$FRAMEWORK_EXECUTABLE_PATH-$ARCH"

EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")

done

echo"Merging extracted architectures: ${ARCHS}"

lipo -o"$FRAMEWORK_EXECUTABLE_PATH-merged"-create"${EXTRACTED_ARCHS[@]}"

rm"${EXTRACTED_ARCHS[@]}"

echo"Replacing original executable with thinned version"

rm"$FRAMEWORK_EXECUTABLE_PATH"

mv"$FRAMEWORK_EXECUTABLE_PATH-merged""$FRAMEWORK_EXECUTABLE_PATH"

done

2.上传成功之后,查看 iTunes 上的构建版本,提示我构建失败,然后给我邮箱发了邮件,内容为

Dear developer,

We have discovered one or more issues with your recent delivery for "***". To process your delivery, the following issues must be corrected:

Invalid Bundle- A nested bundle contains simulator platform listed in CFBundleSupportedPlatforms Info.plist key.

Once these issues have been corrected, you can then redeliver the corrected binary.

Regards,

The App Store team

然后我就一直在找 info.plist 中的CFBundleSupportedPlatforms字段怎么找都没有找到,后来通过在终端查找的方式终于找到了原因,原来是第三方的framework中也包含了info.plist文件,但是 xcode 中搜不到,可以通过在终端输入以下命令找到

grep-r"CFBundleSupportedPlatforms"    /YourProjectPathHere

后面的路径是自己的,然后找到相应的 plist 文件,把里面的CFBundleSupportedPlatforms字段改为iphoneOS.这样再上传问题就解决了.


  辛苦了一个月终于把相应的功能实现了,虽然遇到了许多的困难,但最终都通过努力解决了.有写的不到位的地方请大神多多指教,正在虚心学习中.以后还会分享有关经验,希望大家关注我噢😯.谢谢大家.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容