Call Kit
  • iOS
  • Android : Java
  • Web
  • Flutter
  • React Native
  • Overview
  • Quick start
    • Quick start
    • Quick start (with call invitation)
  • Customize the call
    • Overview
    • Set avatar for users
    • Add custom components to the call
    • Configure layouts
    • Hide the label on the user view
    • Implement an audio-only call
    • Customize the menu bar
    • Set a hangup confirmation dialog
    • Call invitation config
    • Calculate call duration
  • Enhance the call
    • Screen sharing
    • Minimize video call window
    • Advanced beauty effects
    • Use Tokens for authentication
  • Troubleshooting call invitations
  • FAQ
  • API Reference
    • API
    • Event
    • Config
  • Migration guide
  • Documentation
  • Call Kit
  • FAQ

FAQ

Last updated:2024-03-26 17:04

1. How to solve the conflict when I integrate Firebase Cloud Message at the same time?

When ZegoCallPrebuilt receives a message from FCM, it sends a broadcast to the current application with action com.zegocloud.zegouikit.call.fcm when the message is not from Zego SDK, similar to the following code:

Intent intent = new Intent("com.zegocloud.zegouikit.call.fcm");
intent.putExtra("remoteMessage", remoteMessage);
context.sendBroadcast(intent);

Therefore, if you have already integrated Firebase Messaging, you only need to follow these steps to complete the migration:

  1. Create and statically register a BroadcastReceiver in your application:

    • Create a BroadcastReceiver, for example,YourCustomBroadcastReceiver.java.
    • Register it to the application node of your application's Manifest.xml file, and set the action to "com.zegocloud.zegouikit.call.fcm", for example:
      <receiver
         android:name="com.zegocloud.uikit.demo.calloffline.YourCustomBroadcastReceiver"
         android:enabled="true"
         android:exported="false">
         <intent-filter>
           <action android:name="com.zegocloud.zegouikit.call.fcm"/>
         </intent-filter>
      </receiver>
  2. Remove your original FCM Service in Manifest.xml,it looks like:

    <service
        android:name=".java.MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>

    please remove it to avoid conflict with Zego SDK.

  3. Listen and handle the relevant events: You have to migrate your logic from MyFirebaseMessagingService to YourCustomBroadcastReceiver as follow.

    original code:

    public class YourFirebaseMsgService extends FirebaseMessagingService {
         @Override
         public void onMessageReceived(RemoteMessage remoteMessage) {
             // your custom logic
         }
     }

    please migrate like this,and delete YourFirebaseMsgService.java then:

    public class YourCustomBroadcastReceiver extends BroadcastReceiver {
    
         private static final String TAG = "CustomReceiver";
    
         public void onReceive(Context context, Intent intent) {
             com.google.firebase.messaging.RemoteMessage remoteMessage = intent.getParcelableExtra("remoteMessage");
             //  your custom logic
             Log.d(TAG, "onReceive.remoteMessage.getData: " + remoteMessage.getData());
         }
     }

    With these steps, you should be able to receive and handle your own FCM messages.

2. How to disable the toast display of callInviteButton?

ZegoSendCallInvitationButton will show some error toast by default,you can disable the toast by this:

ZegoSendCallInvitationButton callInviteButton;

// ...

callInviteButton.showErrorToast(false);
callInviteButton.setOnClickListener(new ClickListener() {
    @Override
    public void onClick(int errorCode, String errorMessage, List<ZegoCallUser> errorInvitees) {
        // add you custom logic for request resoult. 0 means send request success,else means failed.When errorCode is 0 , there may still have some error invitess.please check if all invitess receive successed.
    }
});
3. How to custom the back button event when in a call ?

By default,when in a call,if the back button of android was clicked,user will leave the call directly.

if you want to add a confirm Dialog,you can change the callInvitationConfig like this:

ZegoUIKitPrebuiltCallInvitationConfig callInvitationConfig = new ZegoUIKitPrebuiltCallInvitationConfig();

callInvitationConfig.provider = new ZegoUIKitPrebuiltCallConfigProvider() {
    @Override
    public ZegoUIKitPrebuiltCallConfig requireConfig(ZegoCallInvitationData invitationData) {
        ZegoUIKitPrebuiltCallConfig config = null;
        boolean isVideoCall = invitationData.type == ZegoInvitationType.VIDEO_CALL.getValue();
        boolean isGroupCall = invitationData.invitees.size() > 1;
        if (isVideoCall && isGroupCall) {
            config = ZegoUIKitPrebuiltCallConfig.groupVideoCall();
        } else if (!isVideoCall && isGroupCall) {
            config = ZegoUIKitPrebuiltCallConfig.groupVoiceCall();
        } else if (!isVideoCall) {
            config = ZegoUIKitPrebuiltCallConfig.oneOnOneVoiceCall();
        } else {
            config = ZegoUIKitPrebuiltCallConfig.oneOnOneVideoCall();
        }
        config.hangUpConfirmDialogInfo = new ZegoHangUpConfirmDialogInfo();
        return config;
    }
};

You can adjust the value of the member variable config.hangUpConfirmDialogInfo to change the text of the dialog.

And,You can override BackPressEvent to custom back button event like this:

ZegoUIKitPrebuiltCallService.events.setBackPressEvent(new BackPressEvent() {
    @Override
    public boolean onBackPressed() {
    //returns true means you need to custom back button event,while return false means you don't need to custom back button event,it will behave like default.
        return true;
    }
});

for example,if you want to miniMize call when you have already added ZegoMenuBarButtonName.MINIMIZING_BUTTON in config,you can call ZegoUIKitPrebuiltCallService.minimizeCall() in the callback:

ZegoUIKitPrebuiltCallService.events.setBackPressEvent(new BackPressEvent() {
    @Override
    public boolean onBackPressed() {
        ZegoUIKitPrebuiltCallService.minimizeCall();
        return true;
    }
});
4. How to get log files ?

We contains three different log dirs:

/Pics/zegocloud/call/logs.png

  • Express SDK logs:

    By default, the Express SDK will generate two types of log files:

    • TXT log files starting with "zegoavlog", with a default maximum size of 5MB (5 * 1024 * 1024 Bytes) per log file.

    • ZIP compressed files named "zegoavlog{serial number}-{timestamp}". After decompressing the file, you get a TXT log file named "zegoavlog{serial number}-{timestamp}". The "{serial number}" may vary, but the "{timestamp}" is the same. For example, decompressing zegoavlog3-16901111.zip yields the zegoavlog2-16901111.txt log file.

      The default storage paths are: Android: "/storage/Android/data/[application package name]/files"

  • ZIM SDK logs: The default storage paths are: “/storage/Android/data/[application package name]/files/ZIMLogs”
  • UIKit logs: The default storage paths are: “/storage/Android/data/[application package name]/files/uikit_log"

please send all these files to us to help you solve problems.

Page Directory