Asosiy tarkibga o'tish

9. Joylashuv buyrug‘i (node’lar)

10. TL;DR

    1. location.get — bu node buyrug‘i (node.invoke orqali).
    1. Sukut bo‘yicha o‘chiq.
    1. Sozlamalar selektordan foydalanadi: O‘chiq / Foydalanayotganda / Har doim.
    1. Alohida o‘chirgich: Aniq joylashuv.

15. Nega selektor (oddiy o‘chirgich emas)

  1. OS ruxsatlari ko‘p darajali. 17. Biz ilova ichida selektorni ko‘rsatishimiz mumkin, ammo haqiqiy ruxsatni baribir OS belgilaydi.
    1. iOS/macOS: foydalanuvchi tizim so‘rovlari/Sozlamalarda Foydalanayotganda yoki Har doim ni tanlashi mumkin. 19. Ilova darajani oshirishni so‘rashi mumkin, ammo OS Sozlamalarga o‘tishni talab qilishi mumkin.
    1. Android: fon joylashuvi alohida ruxsat; Android 10+ da ko‘pincha Sozlamalar orqali jarayon talab etiladi.
    1. Aniq joylashuv alohida ruxsat (iOS 14+ “Precise”, Android’da “fine” va “coarse”).
  1. UI’dagi selektor biz so‘raydigan rejimni belgilaydi; haqiqiy ruxsat OS sozlamalarida saqlanadi.

23. Sozlamalar modeli

  1. Har bir node qurilma uchun:
  • location.enabledMode: off | whileUsing | always
  • location.preciseEnabled: bool
  1. UI xatti-harakati:
    1. whileUsing tanlansa, oldingi (foreground) ruxsat so‘raladi.
    1. always tanlansa, avval whileUsing ta’minlanadi, so‘ng fon ruxsati so‘raladi (yoki talab etilsa foydalanuvchi Sozlamalarga yuboriladi).
    1. Agar OS so‘ralgan darajani rad etsa, eng yuqori berilgan darajaga qaytiladi va holat ko‘rsatiladi.

31. Ruxsatlar mosligi (node.permissions)

  1. Ixtiyoriy. 33. macOS node location ni ruxsatlar xaritasi orqali bildiradi; iOS/Android uni bermasligi mumkin.

Buyruq: location.get

  1. node.invoke orqali chaqiriladi.
  2. Parametrlar (tavsiya etiladi):
37. {
  "timeoutMs": 10000,
  "maxAgeMs": 15000,
  "desiredAccuracy": "coarse|balanced|precise"
}
Response payload:
39. {
  "lat": 48.20849,
  "lon": 16.37208,
  "accuracyMeters": 12.5,
  "altitudeMeters": 182.0,
  "speedMps": 0.0,
  "headingDeg": 270.0,
  "timestamp": "2026-01-03T12:34:56.000Z",
  "isPrecise": true,
  "source": "gps|wifi|cell|unknown"
}
  1. Xatolar (barqaror kodlar):
    1. LOCATION_DISABLED: selektor o‘chiq.
    1. LOCATION_PERMISSION_REQUIRED: so‘ralgan rejim uchun ruxsat yetishmaydi.
    1. LOCATION_BACKGROUND_UNAVAILABLE: ilova fon rejimida, ammo faqat Foydalanayotganda ruxsat berilgan.
    1. LOCATION_TIMEOUT: belgilangan vaqtda aniqlanmadi.
    1. LOCATION_UNAVAILABLE: tizim xatosi / provayderlar yo‘q.

46. Fon xatti-harakati (kelajakda)

  1. Maqsad: model node fon rejimida bo‘lsa ham joylashuvni so‘rashi mumkin, ammo faqat quyidagi holatlarda:
    1. Foydalanuvchi Har doim ni tanlagan.
    1. OS fon joylashuviga ruxsat bergan.
    1. Ilovaga joylashuv uchun fon rejimida ishlashga ruxsat berilgan (iOS fon rejimi / Android foreground service yoki maxsus ruxsat).
Bosish orqali ishga tushadigan oqim (kelajakda):
  1. Shlyuz tugunga push yuboradi (jim push yoki FCM ma’lumotlari).
  2. Tugun qisqa muddatga uyg‘onadi va qurilmadan joylashuvni so‘raydi.
  3. Tugun yuklamani Shlyuzga uzatadi.
Eslatmalar:
  • iOS: Doimiy ruxsat + fon joylashuv rejimi talab qilinadi. Jim push cheklanishi mumkin; vaqti-vaqti bilan nosozliklar kutiladi.
  • Android: fon joylashuvi oldingi (foreground) servisni talab qilishi mumkin; aks holda rad etilishi mumkin.

Model/asbob integratsiyasi

  • Asbob yuzasi: nodes asbobi location_get amalini qo‘shadi (tugun talab qilinadi).
  • CLI: openclaw nodes location get --node <id>.
  • Agent qo‘llanmalari: faqat foydalanuvchi joylashuvni yoqqan va doirani tushunganida chaqiring.

UX matni (tavsiya etiladi)

  • O‘chirilgan: “Joylashuvni ulash o‘chirilgan.”
  • Foydalanayotganda: “Faqat OpenClaw ochiq bo‘lganda.”
  • Doimiy: “Fon joylashuviga ruxsat bering. Tizim ruxsati talab qilinadi.”
  • Aniq: “Aniq GPS joylashuvdan foydalaning. Taxminiy joylashuvni ulash uchun o‘chiring.”