初始化参数配置
更新时间: 2024/11/05 17:21:32
IM 登录成功之后,需要调用 CallkitUI 的 init
接口进行呼叫组件的初始化。初始化时您可以通过初始化参数进行高级功能配置。
初始化配置项
使用 CallkitUI 初始化时的配置项如下表所示。
配置项 | 参数类型 | 说明 |
---|---|---|
rtcAppKey | String | 必选。配置用户使用的 App Key。 |
currentUserAccId | String | 必选。当前登录 IM SDK 用户的账号 ID。 |
currentUserRtcUId | long | 可选。设置通话中对应的 rtcUid ,若不设置,组件内部会生成。rtcUid ,就无法使用网易云信提供的话单功能,此时您需要自行实现话单,详情请参考 话单。 |
rtcTokenService | TokenService | 如果使用安全模式则必须配置此项,在此回调中根据传入的 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 | PushConfigProvider | V2.0 之后版本删除该参数,设置推送配置可在发起呼叫时配置。 用户结束进程后,呼叫邀请通过推送配置,用户可根据邀请信息设置推送内容,推送配置请参考 IM 即时通讯的 推送管理 |
rtcCallExtension | CallExtension | 您可以通过该参数实现修改 NERTC SDK 的功能。rtcCallExtension 封装了通过呼叫组件使用 RTC SDK 的功能。 |
soundHelper | SoundHelper | 此方法支持用户控制是否在呼叫/被叫时展示铃声以及铃声可配置 |
rtcInitScope | Boolean | V2.0 之后版本删除该参数,使用 initRtcMode 。控制 NERTC SDK 是全局初始化一次,还是每次通话重新初始化以及释放。
默认为 true |
initRtcMode | Integer | 控制 NERTC SDK 是全局初始化一次,还是每次通话重新初始化以及释放。
默认为 NECallInitRtcMode.GLOBAL |
enableOrder | Boolean | 控制是否发送本地通话不成功的话单。 若用户不想使用组件内置话单功能,可在后台关闭话单功能后,自己实现话单,通知配置设置为 false。 默认为 true |
logRootPath | String | V2.0 之后版本删除该参数,开发者无法修改日志路径。 |
enableAutoJoinWhenCalled | Boolean | 收到呼叫后是否自动加入信令通道,默认为 false。
|
audio2Video | Boolean | 视频通话转音频通话是否需要对方确认(须通话双方配置相同) 默认为 false |
video2Audio | Boolean | 音频通话转视频通话是否需要对方确认(须通话双方配置相同) 默认为 false |
p2pAudioActivity | Class |
注册用户自己实现的点对点音频通话页面 |
p2pVideoActivity | Class |
注册用户自己实现的点对点视频通话页面 |
language< | NECallUILanguage | 多语言设置,默认为 NECallUILanguage.AUTO,应用系统默认语言。NECallUILanguage.ZH_HANS,中文。NECallUILanguage.EN,英文。note type="note">V2.4.0 及之后版本支持该参数。 |
使用说明
请调用 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, "您有新的来电通知", "用户邀请您进行网络电话")