Device location (GPS / network) — a Mob plugin (extracted from mob core in Wave 2).
Requires :location permission (request via Mob.Permissions.request/2;
this plugin registers the :location capability with the platform permission
registry). iOS additionally needs NSLocationWhenInUseUsageDescription in
Info.plist; Android needs ACCESS_FINE_LOCATION and/or
ACCESS_COARSE_LOCATION — both merged from this plugin's manifest at build
time. A missing plist key / manifest entry is the single most common reason
this module silently does nothing.
Location updates arrive as:
handle_info({:location, %{lat: lat, lon: lon, accuracy: acc, altitude: alt}}, socket)
handle_info({:location, :error, reason}, socket)Common reason atoms:
:permission_denied— user denied:location(or revoked it mid-session).:unavailable— the OS can't get a fix right now.
iOS: CLLocationManager. Android: FusedLocationProviderClient.
Summary
Functions
Request a single location fix, then stop.
Start continuous location updates.
Stop continuous location updates.
Types
Functions
@spec get_once(Mob.Socket.t()) :: Mob.Socket.t()
Request a single location fix, then stop.
@spec start( Mob.Socket.t(), keyword() ) :: Mob.Socket.t()
Start continuous location updates.
Options:
accuracy: :high | :balanced | :low(default:balanced)
Call stop/1 when done to save battery.
@spec stop(Mob.Socket.t()) :: Mob.Socket.t()
Stop continuous location updates.