9. Joylashuv buyrug‘i (node’lar)¶
10. TL;DR¶
-
location.get— bu node buyrug‘i (node.invokeorqali).
-
- Sukut bo‘yicha o‘chiq.
-
- Sozlamalar selektordan foydalanadi: O‘chiq / Foydalanayotganda / Har doim.
-
- Alohida o‘chirgich: Aniq joylashuv.
15. Nega selektor (oddiy o‘chirgich emas)¶
- OS ruxsatlari ko‘p darajali. 17. Biz ilova ichida selektorni ko‘rsatishimiz mumkin, ammo haqiqiy ruxsatni baribir OS belgilaydi.
-
- 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.
-
- Android: fon joylashuvi alohida ruxsat; Android 10+ da ko‘pincha Sozlamalar orqali jarayon talab etiladi.
-
- Aniq joylashuv alohida ruxsat (iOS 14+ “Precise”, Android’da “fine” va “coarse”).
- UI’dagi selektor biz so‘raydigan rejimni belgilaydi; haqiqiy ruxsat OS sozlamalarida saqlanadi.
23. Sozlamalar modeli¶
- Har bir node qurilma uchun:
-
location.enabledMode:off | whileUsing | always
-
location.preciseEnabled: bool
- UI xatti-harakati:
-
whileUsingtanlansa, oldingi (foreground) ruxsat so‘raladi.
-
alwaystanlansa, avvalwhileUsingta’minlanadi, so‘ng fon ruxsati so‘raladi (yoki talab etilsa foydalanuvchi Sozlamalarga yuboriladi).
-
- Agar OS so‘ralgan darajani rad etsa, eng yuqori berilgan darajaga qaytiladi va holat ko‘rsatiladi.
31. Ruxsatlar mosligi (node.permissions)¶
- Ixtiyoriy. 33. macOS node
locationni ruxsatlar xaritasi orqali bildiradi; iOS/Android uni bermasligi mumkin.
Buyruq: location.get¶
-
node.invokeorqali chaqiriladi. -
Parametrlar (tavsiya etiladi):
37. {
"timeoutMs": 10000,
"maxAgeMs": 15000,
"desiredAccuracy": "coarse|balanced|precise"
}
Javob yuklamasi:
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"
}
- Xatolar (barqaror kodlar):
-
LOCATION_DISABLED: selektor o‘chiq.
-
LOCATION_PERMISSION_REQUIRED: so‘ralgan rejim uchun ruxsat yetishmaydi.
-
LOCATION_BACKGROUND_UNAVAILABLE: ilova fon rejimida, ammo faqat Foydalanayotganda ruxsat berilgan.
-
LOCATION_TIMEOUT: belgilangan vaqtda aniqlanmadi.
-
LOCATION_UNAVAILABLE: tizim xatosi / provayderlar yo‘q.
46. Fon xatti-harakati (kelajakda)¶
- Maqsad: model node fon rejimida bo‘lsa ham joylashuvni so‘rashi mumkin, ammo faqat quyidagi holatlarda:
-
- Foydalanuvchi Har doim ni tanlagan.
-
- OS fon joylashuviga ruxsat bergan.
-
- Ilovaga joylashuv uchun fon rejimida ishlashga ruxsat berilgan (iOS fon rejimi / Android foreground service yoki maxsus ruxsat).
Bosish orqali ishga tushadigan oqim (kelajakda):
- Shlyuz tugunga push yuboradi (jim push yoki FCM ma’lumotlari).
- Tugun qisqa muddatga uyg‘onadi va qurilmadan joylashuvni so‘raydi.
- 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:
nodesasbobilocation_getamalini 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.”