Product documentation and training for Shipcode.
Basic Action Nodes: Device & Permissions
These Nodes interface with native device capabilities and manage user permission requests for platform features, primarily used in native applications (iOS and Android).

These Nodes interface with native device capabilities and manage user permission requests for platform features, primarily used in native applications (iOS and Android).

  • GetDeviceToken: Retrieves the device's push notification token for FCM or APNs.
  • GetPermissionStatus: Checks the current status of a device permission without prompting the user.
  • Request Permission: Triggers the native OS permission dialog requesting user to grant a specific permission.

GetDeviceToken

This Node retrieves the device's push notification token required for sending notifications through Firebase Cloud Messaging (FCM) on Android or Apple Push Notification service (APNs) on iOS.


Common Use Cases:

  • Registering the device for push notifications during app initialization
  • Sending the device token to your backend server for notification targeting
  • Updating device tokens after app reinstalls or token refresh
  • Associating device tokens with user accounts


💡💡💡 Tip 💡💡💡

Retrieve the device token after successfully requesting notification permission using the Request Permission Node. Attempting to get the token before permissions are granted will fail on most platforms.


📍📍📍 Note 📍📍📍

This Node is only functional in native applications. PWAs and web applications handle push notifications differently and do not use device tokens in the same way.

GetPermissionStatus

This Node checks the current status of a device permission without prompting the user. This allows you to check permission state before deciding whether to request permission or provide alternative functionality.


To configure GetPermissionStatus, select the Node on the Canvas and then open the Settings cog in the Right Sidebar.

  • Permission Type: The specific permission to check:
    • Camera: Access to device camera
    • Photo Library / Media Library: Access to stored photos and videos
    • Microphone: Access to device microphone
    • Location: Access to device location services
    • Notifications: Permission to display push notifications
    • Contacts: Access to device contact list
    • Calendar: Access to device calendar
    • Reminders: Access to device reminders (iOS)
    • Bluetooth: Access to Bluetooth capabilities
    • Motion / Activity: Access to device motion sensors (iOS)


Permission Status Values:

The Node returns one of the following status values:

  • granted: User has granted permission
  • denied: User has explicitly denied permission
  • not-determined / undetermined: User has not been asked yet
  • restricted: Permission is restricted by device policy (parental controls, MDM, etc.)


Common Use Cases:

  • Checking if permission is already granted before showing UI that requires it
  • Determining whether to show permission rationale before requesting
  • Conditionally rendering features based on available permissions
  • Implementing graceful degradation when permissions are denied


💡💡💡 Tip 💡💡💡

Use GetPermissionStatus before calling Request Permission to avoid repeatedly prompting users who have already denied permission. If status is "denied," show an explanation and direct users to system settings instead of requesting again.

Request Permission

This Node triggers the native operating system's permission dialog, requesting the user to grant a specific permission. On iOS and Android, this displays a system modal that the user must respond to.

To configure Request Permission, select the Node on the Canvas and then open the Settings cog in the

Right Sidebar.

  • Permission Type: The specific permission to request:
    • Camera: Request access to device camera
    • Photo Library / Media Library: Request access to stored photos and videos
    • Microphone: Request access to device microphone
    • Location: Request access to device location services
    • Location Always: Request continuous location access (iOS)
    • Location When In Use: Request location access only while app is active
    • Notifications: Request permission to display push notifications
    • Contacts: Request access to device contact list
    • Calendar: Request access to device calendar
    • Reminders: Request access to device reminders (iOS)
    • Bluetooth: Request access to Bluetooth capabilities
    • Motion / Activity: Request access to device motion sensors (iOS)
  • Rationale (Android): Optional text explaining why the permission is needed. This is displayed to users on Android when they've previously denied the permission.


Common Use Cases:

  • Requesting camera access before opening camera functionality
  • Requesting location permission before displaying maps or location-based features
  • Requesting notification permission during onboarding flows
  • Requesting photo library access before allowing users to upload images


💡💡💡 Tip 💡💡💡

Request permissions at the moment of use, not during app launch. Users are more likely to grant permission when they understand the context. For example, request camera permission when the user taps a "Take Photo" button, not when the app first opens.


📍📍📍 Note 📍📍📍

Once a user denies a permission, most platforms will not show the system dialog again if you request it a second time. Use GetPermissionStatus to detect denied permissions and direct users to system settings to manually enable permissions.


💡💡💡 Tip 💡💡💡

Use a Try Node to handle permission request failures gracefully. Connect the success path to functionality that requires the permission, and connect the error path to alternative functionality or an explanation message.

Did this answer your question?