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 | alwayslocation.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):
- 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).
- Shlyuz tugunga push yuboradi (jim push yoki FCM ma’lumotlari).
- Tugun qisqa muddatga uyg‘onadi va qurilmadan joylashuvni so‘raydi.
- Tugun yuklamani Shlyuzga uzatadi.
- 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.”