Android

最近更新时间:2024-08-15 16:31:11

我的收藏

TUICallKit 是否可以不引入 IM SDK,只使用 TRTC?

不可以,TUIKit 全系组件都使用了腾讯云 IM SDK 作为通信的基础服务,例如通话拨打信令、通话忙线信令等核心逻辑,如果您已经购买有其他 IM 产品,也可以参照 TUICallKit 逻辑进行适配。

错误提示“The package you purchased does not support this ability”?

如遇以上错误提示,是由于您当前应用的音视频通话能力包过期或未开通,请参见开通服务,领取或者开通音视频通话能力,进而继续使用 TUICallKit 组件。

如何购买音视频通话套餐?

请参考购买链接 音视频通话 SDK 价格总览,如有其他问题,请点击页面右侧,进行售前套餐咨询;也可以加入我们的 TUICallKit 技术交流平台 zhiliao,进行咨询和反馈。

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 是否支持离线推送呢?

支持,Android 离线推送采用腾讯云的TIMPush推送插件以及自集成推送,接入方式详见:离线唤醒

在通话邀请超时时间内,被邀请者如果离线再上线,能否弹出通话界面?

单人通话时,如果在超时时间内上线,会触发来电邀请;群组通话,如果在超时时间内上线,会拉起未处理的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 技术交流平台 zhiliao,联系我们协助处理。

被叫端来电显示策略

为使 TUICallKit 适应不同的业务需求,增加产品特色,提升用户的使用体验,TUICallKit 2.3 及以上版本Android&iOS发布日志),优化收到来电后的通话页面显示弹出策略,详情如下所示:
全屏显示通话等待界面
横幅显示来电请求






2.3.0.920版本及之后的版本
2.3版本之前
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