記錄剛做完的環信+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 --info
or --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和 環信帳號 不為空時,進行一波環信的登入,是真的虛浮。
待續....
相關文章
- 記錄環信IM使用restful介面時遇到的傳送PUT請求失敗的問題REST
- 學習httprunner遇到的問題記錄HTTP
- 記錄使用Performance API遇到的問題ORMAPI
- jQuery 遇到問題記錄jQuery
- 用筆記來記錄遇到的問題:釋出版本和非釋出版本遇到的問題筆記
- 剛開始學習nlp時遇到的問題
- 記錄一個新專案遇到的 MySQL 問題MySql
- Flutter開發過程中遇到的問題記錄Flutter
- maven專案遇到的一些問題記錄Maven
- 小白記錄Java後端學習遇到的問題Java後端
- 搭建TS環境遇到的問題
- 記錄一次spark連線mysql遇到的問題SparkMySql
- 升級Xcode 10遇到的問題做個記錄XCode
- 建立 SAP Fiori Catalog 時遇到的 duplicate 記錄的問題分析
- MAC 安裝 VMAF 遇到的問題及解決方法記錄Mac
- 關於使用雲伺服器遇到的問題記錄(一)伺服器
- springboot多模組專案搭建遇到的問題記錄Spring Boot
- 記錄一次Array轉換為List遇到的問題
- AS Notes|記錄日常開發遇到的 AS 問題(不斷更新。。。
- 直播系統開發遇到的三大問題
- 工作遇到的問題小記(一)
- python記錄下工作後遇到的問題,時間的轉化Python
- 記錄自己面試遇到的難題及分析面試
- 記錄下登陸阿里伺服器所遇到的問題以及一些常用的命令記錄阿里伺服器
- 線上直播原始碼實現直播技術曾遇到的那些小問題原始碼
- 影片直播原始碼實現直播技術曾遇到的那些小問題原始碼
- 使用ogg 從oracle 同步mysql遇到問題記錄OracleMySql
- react native搭建環境時遇到的問題React Native
- CentOS下搭建LAMP環境及遇到的問題CentOSLAMP
- 記錄首次修改vue-element-admin遇到的一些問題Vue
- 記錄在使用Django開發過程中遇到的問題No.2Django
- Spark 環境問題記錄和解決方法Spark
- 今天記錄一個小程式使用客服的功能遇到的坑,版本庫問題
- 個人CSS問題的記錄CSS
- 資料庫中怎麼取回剛剛插入的記錄?資料庫
- 配置Mysql Group Replication遇到的問題筆記MySql筆記
- 使用nagios所遇到的問題簡記iOS
- 記錄django-rest-framework處理微信支付notify_url遇到的問題DjangoRESTFramework