Android

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

我的收藏

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

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

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

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

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

请参考购买链接 音视频通话 SDK 价格总览,如有其他问题,请点击页面右侧,进行售前套餐咨询;或者加入 QQ 群:605115878,进行咨询和反馈。

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 及以上版本发布日志),优化收到来电后的通话页面显示弹出策略,详情如下所示:
全屏显示通话等待界面
横幅显示来电请求






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