TL;DR
location.getは node command(node.invoke経由)- デフォルトでは off
- Android アプリ設定は selector 方式: Off / While Using
- 別 toggle として Precise Location がある
なぜ selector なのか(単なる switch ではない)
OS の権限モデルは多段階です。アプリ内では selector を提示できますが、実際にどの権限が付与されるかは OS 側が最終的に決定します。- iOS / macOS では system prompt や Settings に While Using または Always が出ることがある
- Android アプリは現時点では foreground location のみをサポートする
- precise location は独立した権限である(iOS 14+ の “Precise”、Android の “fine” / “coarse”)
設定モデル
node device ごとの設定:location.enabledMode:off | whileUsinglocation.preciseEnabled: bool
whileUsingを選ぶと foreground permission を要求する- OS が要求レベルを拒否した場合は、実際に許可された最上位レベルへ戻し、状態を表示する
権限マッピング(node.permissions)
任意です。macOS node は permissions map でlocation を返しますが、iOS / Android では省略される場合があります。
コマンド: location.get
node.invoke 経由で呼び出します。
パラメータ(推奨):
LOCATION_DISABLED: selector が offLOCATION_PERMISSION_REQUIRED: 要求モードに必要な権限がないLOCATION_BACKGROUND_UNAVAILABLE: アプリが background だが、While Using しか許可されていないLOCATION_TIMEOUT: 規定時間内に位置 fix が得られないLOCATION_UNAVAILABLE: system failure または provider 不在
バックグラウンド挙動
- Android アプリは background 中の
location.getを拒否する - Android で位置情報を取得する際は OpenClaw を foreground のままにする
- 他の node platform では挙動が異なる可能性がある
モデル / ツール統合
- tool surface:
nodestool にlocation_getaction を追加する(node 必須) - CLI:
openclaw nodes location get --node <id> - agent guideline: ユーザーが location を有効化し、共有範囲を理解している場合にのみ呼び出す
UX 文言案
- Off: 「位置情報の共有は無効です。」
- While Using: 「OpenClaw を開いている間だけ共有します。」
- Precise: 「高精度な GPS 位置を使用します。おおよその位置だけを共有したい場合はオフにしてください。」