Wise Flutter SDK

Send an email to info@wiseapp.live to get your VENDOR_ID and NAMESPACE to be used in the Android Integration steps below

1. Wise Flutter Package

Add wisesdk package to your pubspec.yaml and execute flutter pub get command to install the package.

dependencies:
  wisesdk: 0.1.2

Package home page:https://pub.dev/packages/wisesdk

2. Android Integration

Prerequisites

  • Project specifications:

    • Minimum API: 24

    • Compile API: 34

    • Recommended target API: 34

  1. Open your_project_folder/adroid/build.gradle and add maven and jcenter repositories to allprojects

allprojects {
    repositories {
        google()
        mavenCentral()

				// Wise repository
        maven {
            url "<https://wise-maven.s3.ap-south-1.amazonaws.com/android/releases>"
        }

        jcenter() // Required for zoom SDK
    }
}
  1. Download Zoom SDK and unzip the file. After unzipping the downloaded file, you will find two folders mobilertc inside.

    Download zoom-sdk-android-6.0.2.21328

  2. Move mobilertc folders into your_project_folder/android folder.

  3. Open android/settings.gradle and inlcude mobilertc and commonlib apps.

include ":app"
include ":mobilertc"

3. iOS Integration

  • TBD

4. SDK Initialisation

In order to use the Wise SDK, it should be initialised first.

  • Set your Vendor ID and Namespace

  • Set Lens icon (Optional)

  • Enable / Disable screen capture (Optional)

class _MyAppState extends State<MyApp> {
  final _wiseSdk = Wisesdk();

  // channel name must by `wisesdk`
  final wiseChannelName = 'wisesdk';

  @override
  void initState() {
    super.initState();
    initPlatformState();

    final methodChannel = MethodChannel(wiseChannelName);
    methodChannel.setMethodCallHandler(_wiseSDKMeetingListener);
  }

  Future<void> initPlatformState() async {

    // Platform messages may fail, so we use a try/catch PlatformException.
    // We also handle the message potentially returning null.
    try {
      await _wiseSdk.initSdk("650d614xxxxxxxxb9988934f", "yellowmonkey");

      // enable / disable screen capture
      _wiseSdk.disableScreenCapture(false);

      // set Lens icon
			// Place a drawable in drawable-nodpi folder and provide the icon 
			// name to setLensIcon() method
      _wiseSdk.setLensIcon("lens_demo");
	}
}

5. Joining a meeting

You can use joinMeeting() to join a meeting. The required {token} can be found in the {public link} of a classroom. To get the {public link} you should call /user/v2/classes/:classId API (documentation)

5.1 Join Meeting by Classroom Public ID

      // join meeting by classroom public ID
      // This doesn't need Authentication or SSO Login
      final joinParams = {
        "classroomPublicId": "65953bb0aa30204e26b047982b51053399",
        "userName": "John",
        "userId": "userId_101001"
      };

			if (await _wiseSdk.isMeetingInProgress()) {
        // return to in progress meeting
        _wiseSdk.gotoMeeting();
      } else {
        _wiseSdk.joinMeeting(joinParams);
      }

5.2 Join Meeting by Classroom ID

  // join meeting by classroom number
  // SSO Login or Auth token is needed to do this
	final joinParams = {
        "classroomId": "65953bb0aa3f4e26b047982b",
        "disableScreenCapture": true
      };

	if (await _wiseSdk.isMeetingInProgress()) {
        // return to in progress meeting
        _wiseSdk.gotoMeeting();
  } else {
        _wiseSdk.joinMeeting(joinParams);
  }

6. Login using SSO Token

To login into SDK using SSO Token, pass tho SSO token to loginUsingSSOToken() method.

await _wiseSdk.loginUsingSSOToken("YOUR_SSO_TOKEN");

To logout from SSO, call logoutSSO() method.

_wiseSdk.logoutSSO(); 

7. Meeting listeners

WiseSDKMeetingListener provides necessary callbacks to listen to meeting status.

Future<void> _wiseSDKMeetingListener(MethodCall call) async {
    switch (call.method) {
      case "onInitialised":
        {
          debugPrint("onInitialised");
        }
      case "onMeetingConnecting":
        {
          debugPrint("onMeetingConnecting");
        }

      case "onMeetingEnded":
        {
          final userId = call.arguments;
          debugPrint("onMeetingEnded userId: $userId");
        }

      case "onMeetingEndedByHost":
        {
          debugPrint("onMeetingEndedByHost");
        }

      case "onMeetingEndedWithError":
        {
          final data = call.arguments;
          int errorCode = data["errorCode"];
          int internalErrorCode = data["internalErrorCode"];
          String message = data["message"];

          debugPrint(
              "onMeetingEndedWithError $errorCode, $internalErrorCode, $message");
        }

      case "onMeetingNeedPasswordOrDisplayName":
        {
          debugPrint("onMeetingNeedPasswordOrDisplayName");
        }

      case "onMeetingNotStartedByHostError":
        {
          debugPrint("onMeetingNotStartedByHostError");
        }

      case "onMeetingStarted":
        {
          final isMeetingStarted = call.arguments;
          debugPrint(
              "onMeetingStarted isMeetingStarted: $isMeetingStarted");
        }

      case "onSDKError":
        {
          final data = call.arguments;
          int wiseErrorCode = data["wiseErrorCode"];
          int errorCode = data["errorCode"];
          int internalErrorCode = data["internalErrorCode"];

          debugPrint(
              "onSDKError $wiseErrorCode, $errorCode, $internalErrorCode");
        }

      case "onVendorIdError":
        {
          debugPrint("onVendorIdError");
        }
    }
  }

8. Example

You can refer the full example here.

9. Error Codes

In case of an error, onSDKError() will be triggered with an error code.

Error CodeDescription

1

JWT Token error has occurred. This can be due to invalid vendor Id.

2

Zoom SDK failed to initialise.

3

Wise SDK failed to communicate with it’s servers.

4

Error fetching the SDK config

10. Proguard Rules

Add the below proguard rules to your android/proguard-rules.pro when minification is enabled.

# zoom sdk
-keep class  us.zoom.**{*;}
-keep class  com.zipow.**{*;}
-keep class  us.zipow.**{*;}
-keep class  org.webrtc.**{*;}
-keep class  us.google.protobuf.**{*;}
-keep class  com.google.crypto.tink.**{*;}
-keep class  androidx.security.crypto.**{*;}

# wise sdk
-keep class com.wise.sdk.data.** { *; }
-keep class com.wise.sdk.core.** { *; }
-keep class com.wise.sdk.network.result.** { *; }

Last updated