本文介紹Android端集成AUI Kits 低代碼集成工具的常見問題。
工程編譯問題
AUI工程支持最小兼容版本是多少?
最小兼容版本Android 5.0(SDK API Level 21),App支持的最低系統版本5.0。
如何配置混淆?
混淆開啟配置。將build.gradle > buildTypes > minifyEnabled設置為true。
AUI Kits混淆配置。為proguard-rules.pro文件增加如下配置:
-keep class com.alivc.** { *; } -keep class com.aliyun.** { *; } -keep class com.aliyun.rts.network.* { *; } -keep class org.webrtc.** { *; } -keep class com.alibaba.dingpaas.** { *; } -keep class com.dingtalk.mars.** { *; } -keep class com.dingtalk.bifrost.** { *; } -keep class com.dingtalk.mobile.** { *; } -keep class org.android.spdy.** { *; } -keep class com.alibaba.dingpaas.interaction.** { *; } -keep class com.cicada.**{*;}
出現contains C++ files but it is not using a supported native build system 錯誤,如何解決?
查看local.properties ndk是否配置成功。
ndk.dir=/Users/xx/Library/Android/ndk
Gradle插件版本過低,推薦配置為:com.android.tools.build:gradle:4.0.2。
dependencies{ classpath 'com.android.tools.build.gradle:4.0.2' }
美顏集成問題
接入美顏之后,點擊無反應或不生效
請檢查您是否申請成功《美顏特效》License,如未申請或申請失敗,需要先申請。具體操作,請參見管理License。
美顏部分模塊不可用
目前AUI Kits工程引入的《美顏特效》版本為旗艦版。請檢查您的開通的版本是否較低,例如基礎版。
引入美顏后導致工程包的體積過大
美顏貼紙相關內容占用空間較大,可根據您使用的美顏版本,設置使用期間在線下載貼紙等資源降低資源包大小,示例如下。
旗艦版
api 'com.aliyunsdk.components:queen_menu:2.4.1-official-menu-ultimate-tiny'
專業版(Pro版)
api 'com.aliyun.maliang.android:queen_menu:2.5.0-official-pro-tiny'
API使用相關問題
目前涉及的服務端接口有哪些?
public interface ApiService {
@POST("live/login")
//登錄
ApiInvoker<AppServerToken> login(@Body LoginRequest request);
//獲取token校驗合法性
@POST("live/token")
ApiInvoker<Token> getToken(@Body TokenRequest request);
//創建直播間
@POST("live/create")
ApiInvoker<LiveModel> createLive(@Body CreateLiveRequest request);
//更新直播間信息,比如更新公告等
@POST("live/update")
ApiInvoker<LiveModel> updateLive(@Body UpdateLiveRequest request);
//獲取直播間信息,方便進入直播間信息展示
@POST("live/get")
ApiInvoker<LiveModel> getLive(@Body GetLiveRequest request);
//推流成功后, 調用此服務通知服務端更新狀態(開播狀態)
@POST("live/start")
ApiInvoker<Void> startLive(@Body StartLiveRequest request);
//停止推流后, 調用此服務通知服務端更新狀態(停播狀態)
@POST("live/stop")
ApiInvoker<Void> stopLive(@Body StopLiveRequest request);
//獲取直播間列表
@POST("live/list")
ApiInvoker<List<LiveModel>> getLiveList(@Body ListLiveRequest request);
//主播將最新的麥上成員列表更新到AppServer端,直播間連麥管理模塊用
@POST("live/updateMeetingInfo")
ApiInvoker<MeetingInfo> updateMeetingInfo(@Body UpdateMeetingInfoRequest request);
//獲取連麥觀眾信息,直播間連麥管理模塊用
@POST("live/getMeetingInfo")
ApiInvoker<MeetingInfo> getMeetingInfo(@Body GetMeetingInfoRequest request);
}
目前涉及的互動消息(IM)SDK消息接口有哪些?
public interface AUIMessageService {
/**
* 發送彈幕
*
* @param content 消息體內容
* @param callback 回調函數
*/
void sendComment(String content, Callback<String> callback);
/**
* 開始直播
*
* @param callback 回調函數
*/
void startLive(Callback<String> callback);
/**
* 結束直播
*
* @param callback 回調函數
*/
void stopLive(Callback<String> callback);
/**
* 更新公告
*
* @param notice 公告內容
* @param callback 回調函數
*/
void updateNotice(String notice, Callback<String> callback);
/**
* 申請連麥 (觀眾端調用)
*
* @param receiveId 指定接收消息的人 (該場景為主播id)
* @param callback 回調函數
*/
void applyJoinLinkMic(String receiveId, Callback<String> callback);
/**
* 處理連麥申請 (主播端調用)
*
* @param agree true: 同意, false: 拒絕
* @param applyUserId 申請人的Id
* @param rtcPullUrl 主播端的rtc拉流地址
* @param callback 回調函數
*/
void handleApplyJoinLinkMic(boolean agree, String applyUserId, String rtcPullUrl, Callback<String> callback);
/**
* 上麥通知
*
* @param rtcPullUrl 上麥觀眾的rtc拉流地址
*/
void joinLinkMic(String rtcPullUrl, Callback<String> callback);
/**
* 下麥通知
*
* @param reason 下麥原因
*/
void leaveLinkMic(String reason, Callback<String> callback);
/**
* 踢下麥 (主播端調用)
*
* @param userId 踢下麥的用戶Id
* @param callback 回調函數
*/
void kickUserFromLinkMic(String userId, Callback<String> callback);
/**
* 更新麥克風狀態
*
* @param opened true:打開; false:關閉;
*/
void updateMicStatus(boolean opened, Callback<String> callback);
/**
* 更新攝像頭狀態
*
* @param opened true:打開; false:關閉;
*/
void updateCameraStatus(boolean opened, Callback<String> callback);
/**
* 取消申請連麥 (觀眾端調用)
*
* @param receiveId 指定接收消息的人 (該場景為主播id)
*/
void cancelApplyJoinLinkMic(String receiveId, Callback<String> callback);
/**
* 命令某人更改麥克風狀態
*
* @param receiveId 被命令人的Id
* @param open true:打開; false:關閉;
* @param callback 回調函數
*/
void commandUpdateMic(String receiveId, boolean open, Callback<String> callback);
/**
* 命令某人更改攝像頭狀態
*
* @param receiveId 被命令人的Id
* @param open true:打開; false:關閉;
* @param callback 回調函數
*/
void commandUpdateCamera(String receiveId, boolean open, Callback<String> callback);
/**
* 添加消息監聽器
*
* @param messageListener 消息監聽器
*/
void addMessageListener(AUIMessageListener messageListener);
/**
* 移除消息監聽器
*
* @param messageListener 消息監聽器
*/
void removeMessageListener(AUIMessageListener messageListener);
/**
* 移除所有消息監聽器
*/
void removeAllMessageListeners();
普通直播和連麥直播的開播流程分別是怎樣的?
普通直播
連麥直播
無人連麥
有人連麥
普通直播間能否切換到連麥直播間?
建議您直接使用連麥直播間,隱藏連麥功能即為普通直播間,如需切換直播間類型,操作比較容易。
連麥直播間如何計費?
直播連麥為后付費計費,開通連麥應用時無需付費。后續使用期間使用連麥時會產生費用,計費詳情,請參見互動直播費用。
AUI組件自定義問題
目前演示類組件有哪些?
點贊、關注、分享等按鈕僅作視覺展示,AUI不提供相關組件。如需使用,需要您對接自有的業務系統走通上述業務流程。
如何自定義自己的組件?怎么使用?
秉承代碼設計的高內聚低耦合原則,抽象出組件的概念,旨在將視圖邏輯在一個獨立類的范圍內自閉環。在房間頁面,能看到的每個視圖,大到整個信息面板,小到分享、點贊、美顏等圖標,都是或者屬于一個組件。
考慮到組件與組件之間有著極為復雜的相對位置關系,SDK內部設計通過setContentView傳遞的XML資源文件來進行組件的靈活配置。
以下內容以自定義一個能夠監聽彈幕信息的組件為例說明如何自定義組件:
新建組件:自定義組件CustomMessageView。
public class CustomMessageView extends AppCompatTextView implements ComponentHolder { private final Component component = new Component(); public CustomMessageView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); setTextColor(Color.RED); setTextSize(TypedValue.COMPLEX_UNIT_SP, 24); } @Override public IComponent getComponent() { return component; } private class Component extends BaseComponent { @Override public void onInit(LiveContext liveContext) { super.onInit(liveContext); // 設置彈幕內容的回調監聽事件 getMessageService().addMessageListener(new SimpleOnMessageListener() { @Override public void onCommentReceived(Message<CommentModel> message) { setText(String.format("%s: %s", message.senderInfo.userNick, message.data.content)); } }); } } }
組件的使用配置:例如在ilr_activity_live.xml文件中的LiveContentLayer節點末尾添加自定義信息組件。添加后如下圖所示:
運行并安裝應用,即可看到再次收到彈幕信息時,屏幕中間也能展示,如下圖:
Demo運行正常,但實際工程有問題
評論鍵盤無法輸入,Demo正常
請檢查您的AndroidManifest.xml、build.gradle等文件配置是否與推薦配置一致。
刪除android:hardwareAccelerated=false設置。
運行出現The user 10154 does not meet the requirements to access device identifiers,Demo正常
請檢查您的SDK Version版本,如果已升級至28以上版本,則硬件標識獲取方式需要增加判斷,示例如下:
private String deviceCode;
if (Build.VERSION.SDK_INT>28){
deviceCode=Settings.System.getString(
this.getContentResolver(),Settings.Secure.ANDROID_ID));
}else{
deviceCode=DeviceUtils.getDeviceId(getContext());
}
微信小程序集成AUI Kits互動直播場景支持小窗口懸浮嗎?
不支持,需要自行實現。