Packages
mob
0.6.10
0.7.20
0.7.19
0.7.18
0.7.17
0.7.16
0.7.15
0.7.14
0.7.13
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.26
0.6.25
0.6.24
0.6.23
0.6.22
0.6.21
0.6.20
0.6.19
0.6.18
0.6.17
0.6.16
0.6.15
0.6.14
0.6.13
0.6.12
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.2
0.6.1
0.6.0
0.5.18
0.5.17
0.5.16
0.5.15
0.5.14
0.5.11
0.5.10
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.0
BEAM-on-device mobile framework for Elixir
Current section
Files
Jump to
Current section
Files
lib/mob/permissions.ex
defmodule Mob.Permissions do
@moduledoc """
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.
> **Beyond `request/2`**: each capability also needs a matching
> `Info.plist` key (iOS) and `AndroidManifest.xml` entry. Without
> them the dialog is silently suppressed and you get no event. See
> the [permissions guide](permissions.html) for the per-capability
> table and the most common failure modes — it's the first place
> to check when "the dialog never appears".
"""
@type capability :: :camera | :microphone | :photo_library | :location | :notifications
@doc """
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.
"""
@spec request(Mob.Socket.t(), capability()) :: Mob.Socket.t()
def request(socket, capability)
when capability in [:camera, :microphone, :photo_library, :location, :notifications] do
:mob_nif.request_permission(capability)
socket
end
end