@grabjs/superapp-sdk
    Preparing search index...

    Class DeviceModule

    JSBridge module for querying native device information.

    Provides access to device checks exposed by the native Grab app bridge. This code must run on the Grab SuperApp's WebView to function correctly.

    ES Module:

    import { DeviceModule } from '@grabjs/superapp-sdk';
    const deviceModule = new DeviceModule();

    CDN (UMD):

    <script src="https://cdn.jsdelivr.net/npm/@grabjs/superapp-sdk@x.y.z/dist/index.js"></script>
    <script>
    const deviceModule = new SuperAppSDK.DeviceModule();
    </script>

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    Methods

    Constructors

    Properties

    MINIMUM_VERSION: Version = ...

    Methods

    • Checks whether the current device supports eSIM.

      Returns Promise<
          | { error: string; status_code: 403 }
          | { error: string; status_code: 500 }
          | { error: string; status_code: 501 }
          | { result: boolean; status_code: 200 }
          | { error: string; status_code: 424 }
          | { error: string; status_code: 426 },
      >

      Whether eSIM is supported on the current device. See IsEsimSupportedResponse.

      Android: 5.402.0, iOS: 5.402.0

      mobile.device

      Simple usage

      import { DeviceModule, isSuccess, isError } from '@grabjs/superapp-sdk';

      // Initialize the device module
      const device = new DeviceModule();

      // Check eSIM support
      const response = await device.isEsimSupported();

      // Handle the response
      if (isSuccess(response)) {
      console.log('eSIM supported:', response.result);
      } else if (isError(response)) {
      switch (response.status_code) {
      case 403:
      console.log('No permission to query eSIM support');
      // Trigger IdentityModule.authorize() for scope 'mobile.device', then reload via ScopeModule.reloadScopes() and try again
      break;
      case 426:
      console.log('User needs to upgrade the app');
      // Advise user to upgrade app
      break;
      default:
      console.error(`Error ${response.status_code}: ${response.error}`);
      }
      } else {
      console.error('Unhandled response');
      }