Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.boxo.io/llms.txt

Use this file to discover all available pages before exploring further.

Miniapp initialization

AppBoxoWebAppInit

An event to notify host app about miniapp’s initialization

AppBoxoWebAppGetInitData

Gets init data from host app Returns an object with:
  • app_id Miniapp ID
  • client_id Host client ID
  • payload String consisting of encrypted user details
  • data {[key: string]: any} null custom data passed from Hostapp
  • token optional User session token if it is still active
TIP There is a shortcut .getInitData() that handles saving details above in cookies or localStorage and returns a Promise.

Miniapp manipulation

AppBoxoWebAppOpenMiniApp

Opens other miniapp based on provided application ID Parameters
  • app_id required Miniapp ID to open

AppBoxoWebAppCloseMiniApp

Close current active miniapp

AppBoxoWebAppOnRestore

Event that is fired when miniapp is restored. Example:
appboxo.subscribe((event) => {
  if (!event.detail) {
    return
  }

  const { type } = event.detail

  if (type === 'AppBoxoWebAppOnRestore') {
    // Miniapp restored
  }
})

Authentication

AppBoxoWebAppLogin

Login user using credentials given from host app Example:
const login = async (data) => {
  const response = await appboxo.sendPromise('AppBoxoWebAppLogin', data)
  // Returns http response
  console.log(response)
}
TIP There is a shortcut that you can use:
appboxo.login(data).then(response => {
   console.log(response)
 }).catch(error => {
   console.log(error)
 })

AppBoxoWebAppLogout

Logout and clear session token Example:
const logout = async (data) => {
  await appboxo.sendPromise('AppBoxoWebAppLogout')
}
TIP There is a shortcut that you can use:
 appboxo.logout().then(() => {
   // logged out
 }).catch(error => {
   console.log(error)
})

AppBoxoWebAppClearToken

Clears saved token in host app

AppBoxoWebAppSaveToken

Saves provided token in host app Parameters
  • token required Token to save in host app

Appboxo Pay

WARNING This event is available from version 1.3.13 and above

AppBoxoWebAppPay

Send payment event to host app transactionToken:string, amount: number, orderId: string, currency: string, extraParams?: any Parameters
  • transactionToken required string Transaction token
  • miniappOrderId required number Unique identifier for the current payment
  • amount required boolean Payment amount
  • currency required string Define currency code
  • extraParams : any Any extra data
Example:
appboxoSdk.send('AppBoxoWebAppPay', {
  transactionToken: "xxx",
  amount: 199.00,
  miniappOrderId: "TM121248847",
  currency: "USD",
  extraParams: {}
})
To receive the result of the payment event, just subscribe to the same event. Host app will sending these as the response: Parameters
  • transactionToken : string Transaction token
  • miniappOrderId: number Unique identifier for the current payment
  • hostappOrderId : number Unique identifier from hostapp
  • amount : boolean Payment amount
  • currency : string Define currency code
  • status : string Status of the payment
  • extraParams : any Any extra data
Example:
const appboxoPaymentStatusHandler = (event) => {
  if (!event.detail) {
    return;
  }

  const { type, data } = event.detail;

  if (type === 'AppBoxoWebAppPay') {
    setResponse(data.status)
  }
}

Tab bar

AppBoxoWebAppSetTabBar

Initialized native tab bar component Parameters
  • show required boolean Defines TabBar visibility
  • activeTab required number Active TabBar item id
  • list required Array<{ tabId: number, tabName: string, tabIcon: string }> Define tabs
  • options required { color: string, background: string, selectedColor: string, hasBorder: boolean, borderColor: string } Tab bar options
  • badges optional Array<{ tabId: number, background: string, color: string, value?: string }> Define tab item badges.
Example:
appboxo.send('AppBoxoWebAppSetTabBar', {
  show: true,
  activeTab: 1,
  list: [
    {
      tabId: 1,
      tabName: 'Home',
      tabIcon: ICON_URL
    },
    {
      tabId: 2,
      tabName: 'About',
      tabIcon: ICON_URL
    },
    {
      tabId: 3,
      tabName: 'Services',
      tabIcon: ICON_URL
    }
  ],
  badges: [
    {
      tabId: 1,
      background: '#ff0000',
      color: '#ffffff',
      value: '4'
    },
    {
      tabId: 3,
      background: '#ff0000',
      color: '#ffffff',
      value: '1'
    }
  ],
  options: {
    color: '#aaaaaa',
    background: '#ffffff',
    selectedColor: '#2eb8da',
    hasBorder: true,
    borderColor: '#dddddd'
  }
})
Sending event with only required changes will preserve initial options:
appboxo.send('AppBoxoWebAppSetTabBar', {
  activeTab: 2
})
appboxo.send('AppBoxoWebAppSetTabBar', {
  options: {
    color: '#ffffff',
    background: '#000000',
    selectedColor: '#2eb8da',
    hasBorder: false
  }
})

AppBoxoWebAppTabBarItemClick

Event that should be subscribed to in order to get active tab item click Example:
appboxo.subscribe((event) => {
  if (!event.detail) {
    return
  }

  const { type, data } = event.detail

  if (type === 'AppBoxoWebAppTabBarItemClick') {
    if (data.tabId) {
      // Active tab id received
    }
  }
})

AppBoxoWebAppSetNavigationBar

Activates native navigation bar. Example:
appboxo.send('AppBoxoWebAppSetNavigationBar', {
  title: 'Light nav bar',     // Navigation bar title
  backButton: true,           // Controls back button visibility
  background: '#ffffff',      // Navigation bar background color
  frontColor: '#000000',      // Navigation bar and status bar accent color
  show: true                  // Controls navigation bar visibility,
  isBackgroundTransparent: true,        // When set to true, will make background transparent
  frontColorWhenTransparent: '#ffffff', // Navigation bar and status bar accent color when navigation has transparent background
  changeBackgroundOnScroll: true        // Will smoothly change backgroound from transparent to `background` color on scroll
})
Sending event with only required changes will preserve initial options:
appboxo.send('AppBoxoWebAppSetNavigationBar', {
  title: 'Changed some time later'
})

Action buttons

AppBoxoWebAppSetActionButton

Changes actions button theme. By default it is dark. Example:
appboxo.send('AppBoxoWebAppSetActionButton', {
  isLight: true
})

Loading indicator

AppBoxoWebAppLoadingIndicator

Show native loading indicator. Important: Loading indicator will timeout after 30 seconds with prompt to hide it if no event is dispatched to change it. Example:
appboxo.send('AppBoxoWebAppLoadingIndicator', {
  show: true
})

QR code reader

AppBoxoWebAppOpenQRCodeReader

Opens native QR code reader. This method will prompt a permission request for camera. Example:
appboxo.send('AppBoxoWebAppOpenQRCodeReader');
Results from QR code reader are received by events: AppBoxoWebAppOpenQRCodeReaderResult or AppBoxoWebAppOpenQRCodeReaderFailed Example:
// Subscribe to events to receive data
appboxo.subscribe(event => {
  if (!event.detail) {
    return;
  }

  const { type, data } = event.detail;

  if (type === 'AppBoxoWebAppOpenQRCodeReaderResult') {
    // Reading result of the QR Code Reader
    console.log(data.code_data);
  }

  if (type === 'AppBoxoWebAppOpenQRCodeReaderFailed') {
    // Catching the error
    console.log(data.error_type, data.error_data);
  }
});

Haptic feedback

AppBoxoWebAppVibrate

Triggers haptic engine on the device, if available. Parameters
  • style optional 'light' | 'medium' | 'heavy' Controls strength of vibration, defaults to ‘light’. Example:
appboxo.send('AppBoxoWebAppVibrate', {
  style: 'medium'
})

Action sheet

AppBoxoWebAppShowActionSheet

Shows native action sheet Parameters header optional string Action sheet header text list required Array<{ id: number, text: string, role?: 'cancel' | 'destructive' | 'selected' }> Define action sheet items Example:
appboxo.send('AppBoxoWebAppShowActionSheet', {
  header: 'Albums',
  list: [
    {
      id: 1,
      text: 'Delete',
      role:'destructive'
    },
    {
      id: 2,
      text: 'Selected',
      role:'selected'
    },
    {
      id: 3,
      text: 'Share',
    },
    {
      id: 4,
      text: 'Play',
    },
    {
      id: 5,
      text: 'Cancel',
      role: 'cancel'
    }
  ]
})

AppBoxoWebAppActionSheetItemClick

Event that should be subscribed to in order to get action sheet item click Example:
appboxo.subscribe((event) => {
  if (!event.detail) {
    return
  }

  const { type, data } = event.detail

  if (type === 'AppBoxoWebAppActionSheetItemClick') {
    if (data.id) {
      // Action sheet item id received
    }
  }
})

Geolocation

AppBoxoWebAppGetGeodata

Requests user geodata. This method will prompt a permission request to access geolocation. Example:
const getGeodata = async () => {
  const data = await appboxo.sendPromise('AppBoxoWebAppGetGeodata');

  return {
    isAvailable: !!data.available,
    lat: parseFloat(data.lat),
    long: parseFloat(data.long)
  };
};

Map

AppBoxoWebAppChooseLocation

Open full screen map to choose location This method will prompt a permission request to access geolocation. Example:
const chooseLocation = async () => {
  const data = await appboxo.sendPromise('AppBoxoWebAppChooseLocation');

  return {
    latitude: parseFloat(data.latitude),
    longitude: parseFloat(data.longitude)
  };
};

AppBoxoWebAppOpenLocation

Open full screen map to that shows markered location This method will prompt a permission request to access geolocation. Example:
const openLocation = async () => {
  const data = await appboxo.sendPromise('AppBoxoWebAppOpenLocation', {
    latitude: 42.5264986,
    longitude: 74.5788997,
    scale: 13
  });

  console.log(data)

  // Returns:
  // {
  //   result: true
  // }
};

Alert

AppBoxoWebAppShowAlert

Show native alert box Parameters header optional string Alert header text message optional string Alert message buttons required Array<{ id: number, text: string, role?: 'cancel' | 'destructive' }> Define buttons Example:
const showAlert = async () => {
  const data = await appboxo.sendPromise('AppBoxoWebAppShowAlert', {
    header: 'Native alert',
    message: 'This is a native alert box.',
    buttons: [
      {
        id: 1,
        text: 'Cancel',
        role:'destructive'
      },
      {
        id: 2,
        text: 'Ok'
      }
    ]
  });

  // Selected button
  const selectedButton = data.id
};

AppBoxoWebAppShowImages

Open full screen native image gallery Parameters start_index optional number Index to start showing from images required Array<string> Image urls Example:
appboxo.send('AppBoxoWebAppShowImages', {
  images: [
    // image urls
  ]
});
After image gallery is closed, same event will be dispatched back to miniapp with result data. Example:
appboxo.subscribe((event) => {
  if (!event.detail) {
    return
  }

  const { type, data } = event.detail

  if (type === 'AppBoxoWebAppShowImages') {
    if (data.result) {
      // Image gallery has been shown successfully
    } else {
      // There were problems loading provided images
    }
  }
})

Storage

AppBoxoWebAppStorageGet

Requests a value from the storage Parameters keys required Array<string> Keys for getting ([a-zA-Z_-0-9]) Example:
const getUserData = async () => {
  const userData = await appboxo.sendPromise('AppBoxoWebAppStorageGet', {
    keys: ['username', 'email']
  });

  console.log(userData)

  // Returns:
  // {
  //   keys: [
  //     {
  //       key: 'username',
  //       value: 'John'
  //     },
  //     {
  //       key: 'email',
  //       value: 'john@doe.com'
  //     }
  //   ]
  // }
};

AppBoxoWebAppStorageGetKeys

Request list of keys of some stored values Parameters count required number Count of keys to get. Max value is 1000 offset optional number The offset required to fetch a specific subset of keys. Default: 0 Example:
const getStorageKeys = async () => {
  const storageKeys = await appboxo.sendPromise('AppBoxoWebAppStorageGetKeys', {
    count: 10
  });

  console.log(storageKeys);

  // Returns:
  // {
  //   keys: ['username', 'email']
  // }
};

AppBoxoWebAppStorageSet

Stores value in storage Parameters key required string The key of value ([a-zA-Z_-0-9]) value optional string value Example:
const saveData = async ({ key, value }) => {
  const response = await appboxo.sendPromise('AppBoxoWebAppStorageSet', {
    key,
    value
  });

  console.log(response);

  // Returns:
  // {
  //   result: true
  // }
};

AppBoxoWebAppStorageRemove

Removes value in storage Parameters key required string The key of value ([a-zA-Z_-0-9]) Example:
const removeData = async ({ key }) => {
  const response = await appboxo.sendPromise('AppBoxoWebAppStorageRemove', { key });

  console.log(response);

  // Returns:
  // {
  //   result: true
  // }
};

AppBoxoWebAppStorageClear

Clears all data in storage Example:
const clearStorage = async () => {
  const response = await appboxo.sendPromise('AppBoxoWebAppStorageClear');

  console.log(response);

  // Returns:
  // {
  //   result: true
  // }
};

Clipboard

AppBoxoWebAppGetClipboard

Gets the content on the system clipboard. Example:
const getClipboard = async () => {
  const response = await appboxo.sendPromise('AppBoxoWebAppGetClipboard');

  console.log(response);

  // Returns:
  // {
  //   data: 'from clipboard or null'
  // }
};

AppBoxoWebAppSetClipboard

Sets the content on the system clipboard. Parameters data required string Content to be copied to clipboard Example:
const setClipboard = async () => {
  const response = await appboxo.sendPromise('AppBoxoWebAppSetClipboard', {
    data: 'copied to clipboard'
  });

  console.log(response);

  // Returns:
  // {
  //   result: true
  // }
};

System information

AppBoxoWebAppGetSystemInfo

Gets system information. Example:
const getSystemInfo = async () => {
  const systemInfo = await appboxo.sendPromise('AppBoxoWebAppGetSystemInfo');

  console.log(systemInfo);

  // Returns:
  // {
  //   brand: 'Apple Inc.',
  //   model: 'iPhone 7 Plus',
  //   pixelRatio: 3,
  //   screenWidth: 414,
  //   screenHeight: 736,
  //   windowWidth: 414,
  //   windowHeight: 672,
  //   statusBarHeight: 20,
  //   system: 'iOS 10.0.1',
  //   platform: 'iOS / iPhone OS',
  //   SDKVersion: 1.0.4,
  //   cameraAuthorized: true,
  //   locationAuthorized: false,
  //   locationEnabled: false,
  // }

};

Accelerometer

AppBoxoWebAppStartAccelerometer

Starts listening on acceleration data. Example:
const startAccelerometer = async () => {
  const response = await appboxo.sendPromise('AppBoxoWebAppStartAccelerometer', {
    interval: 200 // Update interval in ms
  });

  console.log(response);

  // Returns:
  // {
  //   result: true
  // }
};

AppBoxoWebAppStopAccelerometer

Stops listening on acceleration data. Example:
const stopAccelerometer = async () => {
  const response = await appboxo.sendPromise('AppBoxoWebAppStopAccelerometer');

  console.log(response);

  // Returns:
  // {
  //   result: true
  // }
};

AppBoxoWebAppOnAccelerometerChange

Listens on the acceleration data event. You can send AppBoxoWebAppStopAccelerometer event to stop listening. Example:
appboxo.subscribe((event) => {
  if (!event.detail) {
    return
  }

  const { type, data } = event.detail

  if (type === 'AppBoxoWebAppOnAccelerometerChange') {
    console.log(data.x)
    console.log(data.y)
    console.log(data.z)
  }
})

Gyroscope

AppBoxoWebAppStartGyroscope

Starts listening on gyroscope data. Example:
const startAccelerometer = async () => {
  const response = await appboxo.sendPromise('AppBoxoWebAppStartGyroscope', {
    interval: 200 // Update interval in ms
  })

  console.log(response);

  // Returns:
  // {
  //   result: true
  // }
};

AppBoxoWebAppStopGyroscope

Stops listening on gyroscope data. Example:
const stopAccelerometer = async () => {
  const response = await appboxo.sendPromise('AppBoxoWebAppStopGyroscope');

  console.log(response);

  // Returns:
  // {
  //   result: true
  // }
};

AppBoxoWebAppOnGyroscopeChange

Listens on the gyroscope data event. You can send AppBoxoWebAppStopGyroscope event to stop listening. Example:
appboxo.subscribe((event) => {
  if (!event.detail) {
    return
  }

  const { type, data } = event.detail

  if (type === 'AppBoxoWebAppOnGyroscopeChange') {
    console.log(data.x)
    console.log(data.y)
    console.log(data.z)
  }
})

Compass

AppBoxoWebAppStartCompass

Starts listening on compass data. Example:
const startCompass = async () => {
  const response = await appboxo.sendPromise('AppBoxoWebAppStartCompass')

  console.log(response);

  // Returns:
  // {
  //   result: true
  // }
};

AppBoxoWebAppStopCompass

Stops listening on compass data. Example:
const stopCompass = async () => {
  const response = await appboxo.sendPromise('AppBoxoWebAppStopCompass');

  console.log(response);

  // Returns:
  // {
  //   result: true
  // }
};

AppBoxoWebAppOnCompassChange

Listens on the compass data event. You can send AppBoxoWebAppStopCompass event to stop listening. Example:
appboxo.subscribe((event) => {
  if (!event.detail) {
    return
  }

  const { type, data } = event.detail

  if (type === 'AppBoxoWebAppOnCompassChange') {
    console.log(data.direction)
  }
})

Background color

AppBoxoWebAppSetBackgroundColor

Dynamically sets the background color of the window.
appboxo.send('AppBoxoWebAppSetBackgroundColor', {
  color: '#ff0000'
});

Status bar color

AppBoxoWebAppSetStatusBarColor

Dynamically sets the status bar color
appboxo.send('AppBoxoWebAppSetStatusBarColor', {
  color: '#ffffff'
})

Tracking

AppBoxoWebAppTrack

Send postback tracking data about transaction Example:
const sendTransactionData = async (data) => {
  const response = await appboxo.sendPromise('AppBoxoWebAppTrack', data)
  // Returns http response
  console.log(response)
}

sendTransactionData({
  action: 'transaction',
  payload: {
    shipping: 5,
    tax: 0.57,
    discount: 2.25,
    currency_code: 'USD',
    customer: { // Optional
      first_name: 'John',
      last_name: 'Doe',
      email: 'jdoe@domain.com',
      ip_address: '234.192.4.75'
    },
    items: [
      {
        name: 'Product name',
        description: 'Product description',
        price: 8.80,
        amount: 2,
        total: 17.6,
        package_id: 1232
      }
    ]
  }
})
TIP There is a shortcut that you can use to send tracking data:
appboxo.track(data).then(response => {
  console.log(response)
}).catch(error => {
  console.log(error)
})

Custom events

AppBoxoWebAppCustomEvent

Send custom event to host app. Example:
appboxo.send('AppBoxoWebAppCustomEvent', {
  type: 'any_string_identifier',  // Any string identifier to be handled by host app
  payload: {                      // Any payload data to be send to host app
    // Your data
  }
})

Download file

AppBoxoWebAppDownloadFile

Send event to download file Example:
appboxo.send('AppBoxoWebAppDownloadFile', {
  url: 'url',  
  file_name: 'filename.png'
})

Share text and file

AppBoxoWebAppShare

Send event to open native share modal Example:
appboxo.send('AppBoxoWebAppShare', {
  text: 'text',   
  url: 'url',  
  file_name: 'filename.png'
})