Mob.Permissions (mob v0.3.5)

Copy Markdown View Source

Request OS-level permissions from the user.

The permission dialog is shown asynchronously. The result arrives as:

handle_info({:permission, capability, :granted | :denied}, socket)

Capabilities that require this:

  • :camera
  • :microphone
  • :photo_library
  • :location
  • :notifications

Capabilities that need no permission: haptics, clipboard, share sheet, file picker.

Summary

Functions

Request an OS permission from the user.

Types

capability()

@type capability() ::
  :camera | :microphone | :photo_library | :location | :notifications

Functions

request(socket, capability)

@spec request(Mob.Socket.t(), capability()) :: Mob.Socket.t()

Request an OS permission from the user.

The system dialog is shown asynchronously. The result arrives in handle_info/2:

def handle_info({:permission, :camera, :granted}, socket), do: ...
def handle_info({:permission, :camera, :denied},  socket), do: ...

Safe to call if the permission is already granted — the result still arrives via handle_info with the current status.

Capabilities that do not require permission (haptics, clipboard, share sheet, file picker) will raise FunctionClauseError — do not call request/2 for them.