TUICallKit 是否可以不引入 IM SDK,只使用 TRTC?
不可以,TUIKit 全系组件都使用了腾讯云 IM SDK 作为通信的基础服务,例如通话拨打信令、通话忙线信令等核心逻辑,如果您已经购买有其他 IM 产品,也可以参照 TUICallKit 逻辑进行适配。
错误提示“The package you purchased does not support this ability”?
如何购买音视频通话套餐?
TUICallKit 崩溃,崩溃日志:"No implementation found for xxxx"?
堆栈信息如下:
java.lang.UnsatisfiedLinkError: No implementation found for void com.tencent.liteav.base.Log.nativeWriteLogToNative(int, java.lang.String, java.lang.String) (tried Java_com_tencent_liteav_base_Log_nativeWriteLogToNative and Java_com_tencent_liteav_base_Log_nativeWriteLogToNative__ILjava_lang_String_2Ljava_lang_String_2)at com.tencent.liteav.base.Log.nativeWriteLogToNative(Native Method)at com.tencent.liteav.base.Log.i(SourceFile:177)at com.tencent.liteav.basic.log.TXCLog.i(SourceFile:36)at com.tencent.liteav.trtccalling.model.impl.base.TRTCLogger.i(TRTCLogger.java:15)at com.tencent.liteav.trtccalling.model.impl.ServiceInitializer.init(ServiceInitializer.java:36)at com.tencent.liteav.trtccalling.model.impl.ServiceInitializer.onCreate(ServiceInitializer.java:101)at android.content.ContentProvider.attachInfo(ContentProvider.java:2097)at android.content.ContentProvider.attachInfo(ContentProvider.java:2070)at android.app.ActivityThread.installProvider(ActivityThread.java:8168)at android.app.ActivityThread.installContentProviders(ActivityThread.java:7709)at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7573)at android.app.ActivityThread.access$2600(ActivityThread.java:260)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2435)at android.os.Handler.dispatchMessage(Handler.java:110)at android.os.Looper.loop(Looper.java:219)at android.app.ActivityThread.main(ActivityThread.java:8668)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
注意:
上述异常,是因为 TUICallKit 依赖的 TRTC 等 SDK 部分接口使用了 JNI 实现,Android Studio 在某些条件进行编译 APK 的时候可能并不会把 Native 的 .so 库打包进去,导致出现这类报错,重新 Clean 一下工程,卸载重装即可。
allowBackup 异常?
报错信息:
Manifest merger failed : Attribute application@allowBackup value=(true) from AndroidManifest.xml
问题原因:TUICallKit 依赖的 IM SDK 中默认 allowBackup 的值为 false ,表示关闭应用的备份和恢复功能。
解决方法:您可以在您工程的
AndroidManifest.xml
文件中删除 allowBackup 属性或将该属性改为 false,表示关闭备份和恢复功能;也可以在 AndroidManifest.xml
文件的 application 节点中添加 tools:replace="android:allowBackup";
表示覆盖 IM SDK 的设置,使用您自己的设置。TUICallKit 是否支持离线推送呢?
在通话邀请超时时间内,被邀请者如果离线再上线,能否弹出通话界面?
单人通话时,如果在超时时间内上线,会触发来电邀请;群组通话,如果在超时时间内上线,会拉起未处理的20条群消息,如果存在通话邀请,则触发来电邀请。在不同的版本上来电的显示策略有所不同(详见下方:被叫端来电显示策略)。
应用在后台时,不能自动将通话界面拉取到前台
1. TUICallKit 2.3 及以上版本(Android&iOS发布日志)调整了被叫端的来电显示策略,见下方:被叫端来电显示策略。
2. TUICallKit 2.3 版本之前,将应用从后台自动拉取到前台,需要检查 App 是否开启了“后台自启动”或“悬浮窗”权限。
不同厂商、甚至同一厂商不同 Android 版本,其对于应用开放的权限以及权限名称也会存在不一致。例如,小米6只需要开启后台弹出界面权限,而红米需要同时打开后台弹出界面和显示悬浮窗权限。如何开启权限,详见下方:相关权限开启。
3. 如果遇到以下场景拉不起通话界面,原因是:应用的启动堆栈变化,导致 CallKitActivity 界面被遮挡移除了。
场景一:接通后退到后台,点击桌面图标进入应用,原通话界面消失;
场景二:应用在后台时,开启banner的情况下,收到通知 View,不点击 View,点击桌面图标进入应用,拉不起通话界面且通知消失;
场景三:应用在后台时,收到离线推送,不点击推送通知,点击桌面图标进入应用,无法拉起通话界面或通话界面闪了一下;
以上几种情况,需要在您自己业务的默认启动的主 Activity 中添加以下代码,每个应用默认启动的 Activity 都不一样,详见 AndroidManifest.xml 配置,以目前大部分应用的启动页 SplashActivity 为例:
if (!isTaskRoot() && getIntent() != null && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(getIntent().getAction())) { finish(); return; }
说明:
被叫端来电显示策略
为使 TUICallKit 适应不同的业务需求,增加产品特色,提升用户的使用体验,TUICallKit 2.3 及以上版本(Android&iOS发布日志),优化收到来电后的通话页面显示弹出策略,详情如下所示:
全屏显示通话等待界面 | 横幅显示来电请求 |
| |
1. 如果您想要被叫端收到邀请时,尽量去拉起全屏通话界面,那么您可以更新 tuicallkit-kt 代码到最新。该情况下,被叫端的来电显示策略如下:
2. 如果您想在被叫端收到通话的时候,先展示一个横幅,然后根据需要拉起全屏通话界面,那么您可以调用以下接口开启该功能。
TUICallKit.createInstance(context).enableIncomingBanner(true);
开启后,被叫端的来电策略如下所示,只要开启悬浮窗权限,就能尽可能的展示来电横幅。
说明:
如果没有按照上述策略显示来电界面,请过滤
onCallReceived
日志,检查是否收到通话邀请,如果没有该日志的打印,请加入我们的 TUICallKit 技术交流平台 zhiliao,联系我们协助处理。相关权限开启
为实现良好的通话体验,建议您在应用中开启“通知”权限、“显示在其他应用上层(悬浮窗)”以及“后台拉起界面”权限,具体方法如下:
悬浮窗权限:用于展示自定义的来电通知,以及通话悬浮窗。
后台拉起界面权限:用于当应用在后台时拉起界面(例如:VIVO手机)。
fun requestPermission(context: Context?) {//In TUICallKit,Please open both OverlayWindows and Background pop-ups permission.PermissionRequester.newInstance(PermissionRequester.FLOAT_PERMISSION, PermissionRequester.BG_START_PERMISSION).request()}
安装应用后,您可以长按应用图标,选择“应用信息”,然后开启“通知”权限、“显示在其他应用上层”以及“后台拉起界面”权限。或者您可以到
手机 > 系统设置 > 应用管理 > 应用
中手动开启上述权限。Pixel 4a | 小米 | vivo |
| | |