24.9.0 • Published 9 months ago

ws1-sdk-react-native v24.9.0

Weekly downloads
96
License
VMWare License
Repository
-
Last release
9 months ago

ws1-sdk-react-native

Use this document to install the VMware Workspace One SDK Plugin for React-Native. The plugin helps enterprise app developers add enterprise- grade security, conditional access, and compliance capabilities to mobile applications.

Supported Components

This plugin works with the listed component versions.

  • Workspace ONE UEM Console 2322+ (may need to be higher depending on specific features)
  • Android 7.0+ (for Android SDK component) / API level 24 OR above / Android Studio with the Gradle Android Build System (Gradle) 7.4+ or later / Workspace ONE Intelligent Hub for Android version 24.07 or later
  • iOS and iPadOS 15+ or later (for iOS SDK component) / Xcode 15.0+ or later

Initial Setup

Please find the Prerequisites for using the React Native SDK

Package installation

$ npm install ws1-sdk-react-native --save

Mostly automatic installation

$ react-native link ws1-sdk-react-native

Additional Setup

iOS

Add following code in AppDelegate

-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
  //Add following code for posting Notification for URL
  NSNotification *info = [[NSNotification alloc]initWithName:@"UIApplicationOpenURLOptionsSourceApplicationKey" object:url userInfo:options];
  [[NSNotificationCenter defaultCenter] postNotification:info];
  
  return YES;
}

Android

  1. Add the library files location to the application build configuration
    repositories {
    //Old implementation
    // flatDir {
    //     dirs "$rootDir/../node_modules/ws1-sdk-react-native/android/libs"
    // }
    //Change to new Maven URL
    jcenter()
        maven {
            url 'https://vmwaresaas.jfrog.io/artifactory/Workspace-ONE-Android-SDK/'
        }
    }
  1. Modify AndroidManifest.xml for Main Launcher
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:launchMode="singleTask"
            android:windowSoftInputMode="adjustResize">

        </activity>
        <activity
            android:name="com.airwatch.login.ui.activity.SDKSplashActivity" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" /> 
            </intent-filter>
        </activity>
  1. Update your Main Activity
import com.workspaceonesdk.WorkspaceOneSdkActivity;
public class MainActivity extends WorkspaceOneSdkActivity {

  /**
   * Returns the name of the main component registered from JavaScript. This is used to schedule
   * rendering of the component.
   */
  @Override
  protected String getMainComponentName() {
    return "example";
  }
}
  1. . Add SDKEventImpl.java
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import org.koin.core.component.KoinComponent;
import com.airwatch.sdk.profile.AnchorAppStatus;
import com.airwatch.sdk.profile.ApplicationProfile;
import com.airwatch.sdk.shareddevice.ClearReasonCode;
import com.airwatch.event.WS1AnchorEvents;
import org.koin.core.Koin;
import org.koin.core.component.KoinComponent;
import org.koin.mp.KoinPlatformTools;

public class SDKEventImpl implements WS1AnchorEvents, KoinComponent {
    @Override
    public void onApplicationConfigurationChange(Bundle bundle, Context context) {

    }

    @Override
    public void onApplicationProfileReceived(Context context, String s, ApplicationProfile applicationProfile) {
        Log.d("SDK Init","onApplicationProfileReceived");
    }

    @Override
    public void onClearAppDataCommandReceived(Context context, ClearReasonCode clearReasonCode) {
        Log.d("SDK Init","onClearAppDataCommandReceived");

    }

    @Override
    public void onAnchorAppStatusReceived(Context context, AnchorAppStatus anchorAppStatus) {

    }

    @Override
    public void onAnchorAppUpgrade(Context context, boolean b) {

    }

    @Override
    public Koin getKoin() {
        return KoinPlatformTools.INSTANCE.defaultContext().get();
    }
}
  1. . Update your Android Application subclass as follows
    • Declare that the class implements the WorkspaceOneSDKApplication interface.
    • Move the code from the body of your onCreate method, if any, to an override of the AWSDKApplication onPostCreate method.
    • Override the AWSDKApplication getMainActivityIntent() method to return an Intent for the application’s main Activity.
    • Override the following Android Application methods:
      • attachBaseContext
import com.workspaceonesdk.WorkspaceOneSdkApplication;
public class MainApplication extends WorkspaceOneSdkApplication implements ReactApplication {

    // Application-specific overrides : Comment onCreate() out and move the code to onPostCreate()

    //  @Override
    //  public void onCreate() {
    //    super.onCreate();
    //  }

    // Application-specific overrides : Copy all the code from onCreate() to onPostCreate()
    @Override
    public void onPostCreate() {
        super.onPostCreate();
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        preferences.edit().putString("debug_http_host", "localhost:8088").apply();
        SoLoader.init(this, /* native exopackage */ false);
        initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
        
        // Code from the application's original onCreate() would go here
    }
    
    
    public void attachBaseContext(@NotNull Context base) {
        super.attachBaseContext(base);
        attachBaseContext(this);
    }

    
    @NotNull
    @Override
    public Intent getMainActivityIntent() {
        // Replace MainActivity with application's original main activity
        return new Intent(getApplicationContext(), MainActivity.class);
    }

    @NotNull
    @Override
    public WS1AnchorEvents getEventHandler() {
        return new SDKEventImpl();
    }
    
    
}

Feature Description

Initialization of the SDK adds the listed features to your application, depending on the configurations set in the SDK profile in the Workspace One UEM Console.

  • Application level passcode
  • Application level tunneling of network traffic
  • Integrated authentication / single sign on
  • Data loss prevention

    • Disable Screenshot (Android only)
    • Restrict open-in for documents, web links, and email to approved applications only Restrict copy/paste (SDK provides flag value)
    • Restrict access to app when device is offline
    • Branding of VMware AirWatch splash screens when SDK application is launched on device

    Feature Implementation

    Please follow document at implementation.

Release Notes

  • Updated Version of WorkspaceOne SDKs(24.7.0 for iOS and 24.06 for Android)

Workspace One SDK Documentation

For further details about the Workspace One SDK, navigate to Workspace-ONE-SDK and select the required platform, SDK version and Workspace ONE UEM console version.

License

VMWare License

Open Source Link

VMWare Open Source Link

Questions and Feedback

For any questions/feedback or to report an issue, please reach out to VMware support teams

24.9.0

9 months ago

24.2.0

1 year ago

23.10.0

2 years ago

23.5.0

2 years ago

23.7.1

2 years ago

23.7.0

2 years ago

23.2.0

2 years ago

22.12.0

3 years ago

22.8.0

3 years ago

22.5.0

3 years ago

22.3.0

3 years ago

22.1.0

3 years ago

1.3.0

4 years ago

1.2.0

4 years ago

1.1.0

4 years ago

1.0.0

4 years ago

1.0.0-Beta-1

4 years ago

1.0.0-Beta

4 years ago