We transfer students to udalenka in 1 day

image

As early as March 16, we were sitting in a comfortable open space, and the very next day the whole office moved to a remote place, home. On a habr enough enough similar stories. But the specifics of our situation is not the transfer of employees, but the transfer of customers. These are more than three thousand students who came to study in full time, but on the one hand ended up in correspondence.

What was done


The training department for teachers has developed guidelines for online lectures. For example, such as:

Class duration
- 4 ., , (30-40 ), .

- 8 . ( ), ( , , , ).

, , .

Focusing attention
, โ€“ , , . : , 15-20 , , .

(10-12 ). (30+ ), ยซยป , , 2 . 2 . โ€“ .

Huge work fell on the employees of the first and second line of support. Suddenly, thousands of personal user devices appeared on the support, on which it was necessary to help install the necessary software, issue licenses for specific software, and, all of a sudden, Zoom does not work in Crimea (who managed to leave there), Opera with an integrated VPN help.

Zoom was chosen as the main platform.

Initially, the question arose with the planning of classes, the creation of conferences and informing all students and teachers.

image

This is what the Zoom lecture schedule looked like for the first few days. In which all conferences were created manually

image

And so, when it started again in 1s.

Thanks to my colleague that he promptly smoked the Zoom API and screwed up the automatic creation of the conference according to the schedule. And also autoinformation about it.

And here is a link to Sergeyโ€™s works on how to create conferences using the Zoom API.

I, in turn, want to share experience on platform integration in the Android application.
In our user case, this turned out to be very convenient, because Conferences are created on the server and their identifiers are transferred to the schedule on the phone.

image

Schedule interface integrated with Zoom

Now let's see how it works.
Source Code

1. Import two libraries from the SDK : commonlib and mobilertc. This is probably the saddest stage, because your application gets 80 megabytes heavier.

2. We implement InitAuthSDKCallback, MeetingServiceListener in our activity or fragment. For the zoom to work, a minimum API of 21 is necessary (minSdkVersion 16 is indicated in the documentation on the site, but it is not updated very quickly, it is better to focus on examples in samples coming from the SDK).

When creating a fragment, initialize the SDK

Initialize Zoom SDK
private View view;
private ZoomSDK mZoomSDK;
@Override
public View onCreateView(
            LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_first, container, false);

        mZoomSDK = ZoomSDK.getInstance();
        if (mZoomSDK.isLoggedIn()) {
            getActivity().onBackPressed();
            return null;
        }

        InitAuthSDKHelper.getInstance().initSDK(getContext(), this);
        if (mZoomSDK.isInitialized()) {

            ZoomSDK.getInstance().getMeetingService().addListener(this);
            ZoomSDK.getInstance().getMeetingSettingsHelper().enable720p(true);
        }

        return view;
}


To do this, create the InitAuthSDKHelper class and call the function:

initSDK
public void initSDK(Context context, InitAuthSDKCallback callback) {
        if (!mZoomSDK.isInitialized()) {
            mInitAuthSDKCallback = callback;

            ZoomSDKInitParams initParams = new ZoomSDKInitParams();
//            initParams.jwtToken = SDK_JWTTOKEN;
            initParams.appKey = SDK_KEY;
            initParams.appSecret = SDK_SECRET;
            initParams.enableLog = true;
            initParams.logSize = 50;
            initParams.domain = WEB_DOMAIN;
            initParams.videoRawDataMemoryMode = ZoomSDKRawDataMemoryMode.ZoomSDKRawDataMemoryModeStack;
            mZoomSDK.initialize(context, this, initParams);
        }
}


Here we pay attention to the following parameters:

appKey and appSecret - this is the identifier and secret key of your application that you create on the zoom site (it takes about 1 minute), registered as a developer.

In practice, it is strongly discouraged to use them for identification.
Instead, you should use the jwtToken parameter , as it is written here .

Conference Connection
private AutoCompleteTextView idMeeting;
private AutoCompleteTextView idDisplayName;

private void onClickJoin() {
        if(!mZoomSDK.isInitialized())
        {
            Toast.makeText(getContext(),"ZoomSDK has not been initialized 
            successfully",Toast.LENGTH_SHORT).show();
            InitAuthSDKHelper.getInstance().initSDK(getContext(), this);
            return;
        }

if (ZoomSDK.getInstance().getMeetingSettingsHelper().isCustomizedMeetingUIEnabled()) {
   ZoomSDK.getInstance().getSmsService().enableZoomAuthRealNameMeetingUIShown(false);
} else {
   ZoomSDK.getInstance().getSmsService().enableZoomAuthRealNameMeetingUIShown(true);
}

        String number = idMeeting.getText().toString();
        String name = idDisplayName.getText().toString();

        JoinMeetingParams params = new JoinMeetingParams();
        params.meetingNo = number;
        params.displayName = name;
        ZoomSDK.getInstance().getMeetingService().joinMeetingWithParams(getContext(), params);
}


image

This implementation uses the native interface. But the possibility of customization is supported.

findings


  1. The training process (with the exception of those cases when workshops and special equipment are required) can be transferred to online.
  2. A focused and systematic approach is important to eliminate the zoo of communication tools that every tutor will use.
  3. If the training process at your backend was previously established, then the introduction of conferences into the mobile application will not take much time.

All Articles