记录刚做完的环信+ucloud直播遇到的问题

  • 1.首先环信集成必须添加的
<meta-data
    android:name="EASEMOB_APPKEY"
    android:value="yourHuanxinAppKey"
    /> 

这个appkey必须是在环信后台配置完成后返回的appkey才可以

  • 2.easeUI中的glide是3.6.1,如果主程序中使用的是4.0以上的,那么就把easeUI中的版本改成与主moudle相同的版本
    要不然可能会出现:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

如果出现这样的错误,也不要着急
找到Androidstudio窗口的右下角 Gradle Console 在这其中的最底部会有一句这样一句try开头的错误代码

Try:
Run with --stacktrace option to get the stack trace. Run with --infoor --debug option to get more log output.
Get more help at https://help.gradle.org

点击try之后的

Run with --stacktrace 

会出现比如像下面格式的错误代码

java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Error:com.android.dex.DexException: Multiple dex files define Lcom/nineoldandroids/animation/ArgbEvaluator;

看到这个,那么好吧,你已经离解决问题不远了,这种问题主要是在最后一个类名的身上找突破口,比如Lcom/nineoldandroids/animation/ArgbEvaluator;
中的ArgbEvaluator,双击shitf 全局搜索一下这个类名,看那些类库中使用到了,如下图这样:


找到之后把多余的类库该删的删,该统一版本的统一版本,具体的就看你自己的了。
ps:改完之后不要忘了Clean Project哦!

  • 3.如果直播时发送信息不显示名字
messageView.init(chatroomId);
messageView.setMessageViewListener(new RoomMessagesView.MessageViewListener() {
      @Override
      public void onMessageSend(String content) {
                    EMMessage message = EMMessage.createTxtSendMessage(content, chatroomId);
//                        if (messageView.isBarrageShow) {
//                            message.setAttribute(DemoConstants.EXTRA_IS_BARRAGE_MSG, true);
//                            barrageLayout.addBarrage(content,
//                                    EMClient.getInstance().getCurrentUser());
//                        }
                        message.setChatType(EMMessage.ChatType.ChatRoom);
                        message.setAttribute("nickname", Configure.meBean.getData().getNickname());
                        EMClient.getInstance().chatManager().sendMessage(message);
                        message.setMessageStatusCallback(new EMCallBack() {
                            @Override
                            public void onSuccess() {
                                //刷新消息列表
                                messageView.refreshSelectLast();
                            }
                            @Override
                            public void onError(int i, String s) {
showToast("消息发送失败!");
                            }
                            @Override
                            public void onProgress(int i, String s) {
}
});
                    }

修改message.setAttribute中的value值,如果没有特殊需求一般情况都是修改为在登录时存储的用户名或者使用更新个人信息接口中的个人昵称。

  • 4.如果发起直播或者获取房间列表无法拉流成功

    把推拉流地址拿到,放到ucloud官方给的demo中测试一下,确定不是推拉流地址的问题

    如果出现错误码401,请试试在进入MainActivity

    • (1) 调一下环信登录接口确保环信的token有效,
    • (2) 而且还要在后台设置测试手机号或者帐号为主播帐号,
    • (3) 在ucloud后台的云直播中配置好初始化的推流地址
  • 5.需要配置的几个地方

    • (1) application类中进行初始化,并填入后台给予的secretkey
    • (2) Androidmenifast文件中,配置APPKEY及相关权限
    • (3)集成easeUI(注:最好不要直接copy代码,以加依赖形式进行添加),
  • 6.如果碰到

Error:com.android.dex.DexException: Multiple dex files define Landroid/support/v4/content/ModernAsyncTask;

这样的错误,莫慌,只要把主项目中的V4包改成与拥有ModernAsyncTask这个类的其他Android自带类库的最高版本相同就可以了,具体使这个类显示出来的方法同上 2中的搜索方法

  • 7.如果有只有推流成功,而无法拉流成功

    • 我遇到的情况是放到Ucloud直播demo中依然不行
      在这种情况下请先下载ucloud直播demo,然后把拉流的URL拿出来放到demo中去尝试,如果demo中无法拉流成功请到ucloud后台找到云直播live里的域名管理,看看有没有配置好。
  • 8.测试完成需要注意把手机号码改写为后台返回的值,要不然就会导致只能看你写死的那个手机号发起的直播了。(这一条你可以当做只看看的掠过,毕竟每人的情况不同,我这里是有了只允许单人直播的限制,所以需要用单个人的帐号或者手机号进行测试)

  • 9.如果项目中之前没有集成过环信+Ucloud直播那么在集成完成没有问题之后,要在登录注册时都要进行环信的本地登录
    具体代码如下:

/***
     * 登录环信
     */
    private void loginHuanxin(final String username, final String password) {
        EMClient.getInstance().login(username,password.toLowerCase(),new EMCallBack() {//回调
            @Override
            public void onSuccess() {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            List<EMGroup> grouplist = EMClient.getInstance().groupManager().getJoinedGroupsFromServer();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        EMClient.getInstance().groupManager().loadAllGroups();
                        EMClient.getInstance().chatManager().loadAllConversations();
                        Log.d("main", "登录聊天服务器成功!");
                    }
                }).start();
//                handler.sendEmptyMessage(1);
            }


            @Override
            public void onProgress(int progress, String status) {

            }

            @Override
            public void onError(int code, String message) {
                Log.d("main", "登录聊天服务器失败!");
                if (code == EMError.USER_NOT_FOUND){//如果登录环信服务器失败,导致用户名找不到时,调用环信本地注册接口方法,注册方法在下面贴出来
                    RegistHuanxin(username,password);
                }
            }
        });
    }
//注册环信的方法
 private void RegistHuanxin(final String username,final String pwd) {
        //注册失败会抛出HyphenateException
        new Thread(new Runnable() {
            public void run() {
                try {
                    // call method in SDK
                    EMClient.getInstance().createAccount(username, pwd);
                    runOnUiThread(new Runnable() {
                        public void run() {
                            DemoHelper.getInstance().setCurrentUserName(username);

//                                Toast.makeText(getApplicationContext(), getResources().getString(R.string.Registered_successfully), Toast.LENGTH_SHORT).show();
                        }
                    });
loginHuanxin(username,pwd);//当登录失败重新注册时,需要重新登录一下。
                } catch (final HyphenateException e) {
                    runOnUiThread(new Runnable() {
                        public void run() {
                            int errorCode=e.getErrorCode();
                            if(errorCode== EMError.NETWORK_ERROR){
                                Toast.makeText(getApplicationContext(), getResources().getString(R.string.network_anomalies), Toast.LENGTH_SHORT).show();
                            }else if(errorCode == EMError.USER_ALREADY_EXIST){
                                Toast.makeText(getApplicationContext(), getResources().getString(R.string.User_already_exists), Toast.LENGTH_SHORT).show();
                            }else if(errorCode == EMError.USER_AUTHENTICATION_FAILED){
                                Toast.makeText(getApplicationContext(), getResources().getString(R.string.registration_failed_without_permission), Toast.LENGTH_SHORT).show();
                            }else if(errorCode == EMError.USER_ILLEGAL_ARGUMENT){
                                Toast.makeText(getApplicationContext(), getResources().getString(R.string.illegal_user_name),Toast.LENGTH_SHORT).show();
                            }else{
                                Toast.makeText(getApplicationContext(), getResources().getString(R.string.Registration_failed), Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
                }
            }
        }).start();


    }
  • 10.环信+ucloud做直播是除了登录和注册时需要进行环信的登录之外,你第二次打开APP,已经是自动登录的状态下,你的环信是不会自动登录的,所以你就需要一下的解决办法来缓和一下情绪
    如果在第二次打开需要在本地进行环信的重新登录,我的办法是在mainActivity中判断了token和 环信帐号 不为空时,进行一波环信的登录,是真的虚浮。

待续....

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

推荐阅读更多精彩内容