ws1-sdk-react-native
v24.12.0
Published
The Workspace ONE SDK for React Native allows you to integrate the Workspace ONE SDKs for iOS and Android into your React Native applications.
Downloads
340
Readme
ws1-sdk-react-native
Use this document to install the Omnissa 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 2306+ (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.11 or later
- iOS and iPadOS 15+ or later (for iOS SDK component) / Xcode 15.0.1+ 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
- 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 = uri("https://maven.pkg.github.com/euc-releases/Android-WorkspaceONE-SDK/")
credentials {
/** In gradle.properties file of root project folder, add github.user=GITHUB_USERNAME & github.token=GITHUB_ACCESS_TOKEN **/
username = project.findProperty("github.user") ?: System.getenv("USERNAME")
password = project.findProperty("github.token") ?: System.getenv("TOKEN")
}
}
maven {
url = uri("https://maven.pkg.github.com/euc-releases/ws1-intelligencesdk-sdk-android/")
credentials {
/** In gradle.properties file of root project folder, add github.user=GITHUB_USERNAME & github.token=GITHUB_ACCESS_TOKEN **/
username = project.findProperty("github.user") ?:System.getenv("USERNAME")
password = project.findProperty("github.token") ?:System.getenv("TOKEN")
}
}
}
- 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>
- 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";
}
}
- . 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();
}
}
- . 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 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
Open Source Link
Workspace One Open Source Link
Questions and Feedback
For any questions/feedback or to report an issue, please reach out to Omnissa Customer Connect