初始化参数配置

更新时间: 2023/11/07 07:50:56

IM 登录成功之后,需要调用 CallkitUI 的 init 接口进行呼叫组件的初始化。初始化时您可以通过初始化参数进行高级功能配置。

初始化配置项

使用 CallkitUI 初始化时的配置项如下表所示。

配置项
参数类型
说明
rtcAppKey String 必选。配置用户使用的 App Key
currentUserAccId String 必选。当前登录 IM SDK 用户的 AccId
currentUserRtcUId long 可选。设置通话中对应的 rtc uid,若不设置,组件内部会生成。
rtcTokenService TokenService V1.8.0之前的版本需要配置该参数,V1.8.0及之后版本无需配置该参数。
如果使用安全模式则必须配置此项,在此回调中根据传入的 uid 请求 token 并回传
rtcSdkOption NERtcOption NERTC SDK 初始化的配置,会透传给 SDK
timeOutMillisecond Long 呼叫/接听的超时时间,单位为毫秒,默认30s
resumeBGInvitation Boolean 应用在后台时,收到呼叫邀请未唤起应用被叫页面,此时点击桌面图标唤起应用时,是否展示被叫页面。
默认值 true:表示支持
notificationConfigFetcher Function1<NEInviteInfo, CallKitNotificationConfig> 根据呼叫邀请信息 InvitedInfo 确定展示的通知提示,可配置通知图标、通知 channelId、标题、通知内容
userInfoHelper UserInfoHelper 用户可根据回调 accId 确认该用户呼叫时展示的昵称和头像。默认取当前用户在 IM SDK 中的设置信息
incomingCallEx IncomingCallEx 用户可通过此方法注册重写被叫收到邀请后的行为,默认存在 DefaultIncomingCallEx,也可重写此类实现
pushConfigProvider V1.8.2及之前版本支持该参数。 PushConfigProvider V2.0 之后版本删除该参数,设置推送配置可在发起呼叫时配置。
用户结束进程后,呼叫邀请通过推送配置,用户可根据邀请信息设置推送内容,推送配置请参见 IM 即时通讯的推送管理
rtcCallExtension CallExtension 您可以通过该参数实现修改 NERTC SDK 的功能。 rtcCallExtension 封装了通过呼叫组件使用 RTC SDK的功能。
soundHelper SoundHelper 此方法支持用户控制是否在呼叫/被叫时展示铃声以及铃声可配置
rtcInitScope
V1.8.2及之前版本支持该参数。
Boolean V2.0 之后版本删除该参数,使用 initRtcMode
控制 NERTC SDK 是全局初始化一次,还是每次通话重新初始化以及释放。
  • true: 全局初始化
  • false:每次通话重新初始化。

默认为 true
initRtcMode
V2.0.0及之后版本支持该参数。
Integer 控制 NERTC SDK 是全局初始化一次,还是每次通话重新初始化以及释放。
  • NECallInitRtcMode.GLOBAL: 全局初始化
  • NECallInitRtcMode.IN_NEED:每次通话重新初始化。
  • NECallInitRtcMode.IN_NEED_DELAY_TO_ACCEPT: 和 IN_NEED模式类似,区别在于被叫接听时才初始化

默认为 NECallInitRtcMode.GLOBAL
enableOrder Boolean 控制是否发送本地通话不成功的话单。
若用户不想使用组件内置话单功能,可在后台关闭话单功能后,自己实现话单,通知配置设置为 false。
默认为 true
logRootPath V1.8.2及之前版本支持该参数。 String V2.0 之后版本删除该参数,通过 XkitInitOptions 配置路径。
配置组件日志路径。
  • 若集成的 IM SDK 版本小于 8.5.5 ,则默认路径为 /sdcard/android/data/应用包名/files/ne_log
  • 若集成的 IM SDK 版本为 8.5.5 及以上版本,且未更改 IM SDK 日志路径,则组件日志和 IM SDK 日志默认路径相同,若修改 IM SDK 路径则可配置此字段,使组件路径和 IM SDK 路径一致
enableAutoJoinWhenCalled Boolean 收到呼叫后是否自动加入信令通道,默认为 false 。
  • true:表示收到呼叫后自动加入信令通道。会与多端登录冲突
  • false:会出现呼叫中切换通话类型失效,仅支持通话中切换通话类型
audio2Video Boolean 视频通话转音频通话是否需要对方确认(须通话双方配置相同)
默认为 false
video2Audio Boolean 音频通话转视频通话是否需要对方确认(须通话双方配置相同)
默认为 false
p2pAudioActivity Class 注册用户自己实现的点对点音频通话页面
p2pVideoActivity Class 注册用户自己实现的点对点视频通话页面

使用说明

请调用 CallKitUIOptions 对象中的某个方法完成上述配置项的配置。具体的模版如下:

javaCallKitUIOptions options = new CallKitUIOptions.Builder()
        .rtcAppKey("音视频 sdk AppKey")
        .currentUserAccId("当前用户登录到 IM sdk 的 AccId 账号")
        ......
        // 配置自己需要的配置选项 如配置接听/呼叫的超时时间为 30s
        .timeOutMillisecond(30*1000) // 单位为毫秒
        ......
        .build();
// 若重复初始化会销毁之前的初始化实例,重新初始化
CallKitUI.init(getApplicationContext(), options);

示例代码

以下展示部分重要参数的配置说明和示例代码。

rtcTokenService

V1.8.0 之前的版本需要配置该参数,V1.8.0 及之后版本无需配置该参数。

呼叫组件内部集成了 NERTC SDK,此 SDK 在云信后台安全模式下需要设置对应的音视频通话的 Token,组件通过 rtcTokenService 提供用户设置每次通话的 Token。

在调试接入时,您可以在云信控制台设置应用为调试模式。在调试模式下,加入房间时无需传入 rtcTokenService

若测试完成准备上线,请在云信控制台将应用改为安全模式。在安全模式下,需要设置 TokenService 接口实例并实现 getToken 方法,在此方法中获取 Token,通过方法的 callback 参数进行上报通知,无论成功还是失败均需要上报。

示例代码:

javanew TokenService() {
        @Override
        public void getToken(long uid, RequestCallback<String> callback) {
            try {
                String token = "获取token的异步操作";
                if (resultCode == SUCCESS) {
                    callback.onSuccess(token);    // token 请求成功
                } else {
                 // token 请求失败,用户侧错误码,用户可任意设置对应错误码如,在示例中使用 -1
                    callback.onFailed(resultCode);
                }
            } catch (Exception exception) {
                // token 请求过程中出现异常用户自己完成异常捕获,用户可通过以下方法通知组件
                callback.onException(exception);
            }
        }
}

notificationConfigFetcher

App 在后台时可能会收到其他用户来电请求,此时,受系统限制,可能无法直接展示来电请求页面。您可以先展示来电的 notification ,点击此 notification 跳转到目标的来电请求页面。

notificationConfigFetcher 接口用于简易控制来电通知的 notification 展示内容。

示例代码:

javanew Function1<InvitedInfo, CallKitNotificationConfig>() {
        @Override
        public CallKitNotificationConfig invoke(NEInviteInfo invitedInfo) {
            return null;
        }
}

参数说明如下:

  • NEInviteInfo 为来电用户的通话邀请信息。

    InvitedInfo#invitor 字段为邀请用户的 AccId 不是邀请用户的昵称。

    如果您希望添加主叫用户的昵称,可以通过 InvitedInfo#callerAccId 自己本地映射获取昵称。另外,也可以通过主叫用户呼叫时传入自己的昵称作为呼叫的扩展字段,被叫用户通过 NEInviteInfo#extraInfo 字段解析出。呼叫传入的扩展字段为字符串,用户可通过 json 格式扩展。详细使用可参考 一对一视频呼叫 Demo 中的 SelfNotificationConfigFetcher 类。

  • CallKitNotificationConfig 控制显示的 notification 展示内容。其中 CallKitNotificationConfig 支持设置 notification 的小图标、标题、内容、通道 ID 以及响铃的 Uri。

    如下示例代码为您展示构建一个图标为 R.mipmap.ic_launcher,标题为 您有新的来电通知,内容为 用户邀请您进行网络电话 的 Notification。

    new CallKitNotificationConfig(R.mipmap.ic_launcher, null, "您有新的来电通知""用户邀请您进行网络电话")
    
此文档是否对你有帮助?
有帮助
去反馈
  • 初始化配置项
  • 使用说明
  • 示例代码
  • rtcTokenService
  • notificationConfigFetcher