request

open suspend override fun request(grant: GrantPermission): GrantStatus

Requests a permission from the user.

This function will:

  • Show system permission dialog (if first time or previously denied softly)

  • Return immediately if already granted

  • Suspend until user makes a choice

Supports both built-in and custom permissions:

  • AppGrant enum values (recommended for common permissions)

  • RawPermission for custom/platform-specific permissions

Return

Status after the request (GRANTED if approved, DENIED/DENIED_ALWAYS if rejected)

Example (built-in permission):

val result = grantManager.request(AppGrant.CAMERA)
when (result) {
GrantStatus.GRANTED -> openCamera()
GrantStatus.DENIED -> showRationaleDialog()
GrantStatus.DENIED_ALWAYS -> showGoToSettingsDialog()
else -> {}
}

Example (custom permission):

val customPermission = RawPermission(
identifier = "CUSTOM_FEATURE",
androidPermissions = listOf("com.company.permission.CUSTOM"),
iosUsageKey = "NSCustomUsageDescription"
)
val result = grantManager.request(customPermission)

Parameters

grant

The permission to request (AppGrant or RawPermission)


open suspend override fun request(grants: List<GrantPermission>): Map<GrantPermission, GrantStatus>

Request multiple grants from the system at once.

Platform Behavior:

  • Android: Shows a single system dialog flow for all requested grants. Better UX for related permissions (e.g. FINE + COARSE Location).

  • iOS: Requests each permission sequentially (iOS native behavior).

Return

Map of each grant to its final status

Parameters

grants

List of grants to request