init method

Future<void> init({
  1. required int appID,
  2. required String appSign,
  3. required String userID,
  4. required String userName,
  5. required List<IZegoUIKitPlugin> plugins,
  6. ZegoCallPrebuiltConfigQuery? requireConfig,
  7. ZegoUIKitPrebuiltCallEvents? events,
  8. ZegoCallInvitationConfig? config,
  9. ZegoCallRingtoneConfig? ringtoneConfig,
  10. ZegoCallInvitationUIConfig? uiConfig,
  11. ZegoCallInvitationNotificationConfig? notificationConfig,
  12. ZegoCallInvitationInnerText? innerText,
  13. ZegoUIKitPrebuiltCallInvitationEvents? invitationEvents,
})

you must call this method as soon as the user login(or re-login, auto-login) to your app.

You must include ZegoUIKitSignalingPlugin in plugins to support the invitation feature.

If you need to set ZegoUIKitPrebuiltCallConfig, you can do so through requireConfig. Each time the ZegoUIKitPrebuiltCall starts, it will request this callback to obtain the current call's config.

Additionally, you can customize the call ringtone through ringtoneConfig, and configure notifications through notificationConfig. You can also customize the invitation interface with uiConfig. If you want to modify the related text on the interface, you can set innerText. If you want to listen for events and perform custom logics, you can use invitationEvents to obtain related invitation events, and for call-related events, you need to use events.

Implementation

Future<void> init({
  required int appID,
  required String appSign,
  required String userID,
  required String userName,
  required List<IZegoUIKitPlugin> plugins,

  /// call abouts.
  ZegoCallPrebuiltConfigQuery? requireConfig,
  ZegoUIKitPrebuiltCallEvents? events,

  /// invitation abouts.
  ZegoCallInvitationConfig? config,
  ZegoCallRingtoneConfig? ringtoneConfig,
  ZegoCallInvitationUIConfig? uiConfig,
  ZegoCallInvitationNotificationConfig? notificationConfig,
  ZegoCallInvitationInnerText? innerText,
  ZegoUIKitPrebuiltCallInvitationEvents? invitationEvents,
}) async {
  if (private._isInit) {
    ZegoLoggerService.logWarn(
      'service had init before',
      tag: 'call',
      subTag: 'call invitation service(${identityHashCode(this)})',
    );

    return;
  }

  await ZegoUIKit().getZegoUIKitVersion().then((uikitVersion) {
    ZegoLoggerService.logInfo(
      'versions: zego_uikit_prebuilt_call:4.9.1; $uikitVersion',
      tag: 'call',
      subTag: 'call invitation service(${identityHashCode(this)})',
    );
  });

  private._isInit = true;

  ZegoLoggerService.logInfo(
    'service init',
    tag: 'call',
    subTag: 'call invitation service(${identityHashCode(this)})',
  );

  await private._initPrivate(
    appID: appID,
    appSign: appSign,
    userID: userID,
    userName: userName,
    plugins: plugins,
    requireConfig: requireConfig,
    ringtoneConfig: ringtoneConfig,
    config: config,
    uiConfig: uiConfig,
    notificationConfig: notificationConfig,
    innerText: innerText,
    events: events,
    invitationEvents: invitationEvents,
  );
  _invitation._private.init(
    innerText: innerText,
    events: events,
  );

  await private.callkit._initCallKit(
    pageManager: private._pageManager!,
    androidNotificationConfig:
        private._data!.notificationConfig.androidNotificationConfig,
  );

  await private._initPlugins(
    appID: appID,
    appSign: appSign,
    userID: userID,
    userName: userName,
  );

  await private._initPermissions().then((value) => private._initContext());
}