iBeacon — پروتکل اختصاصی اپل برای بیکنهای Bluetooth Low Energy است که به دستگاههای iOS امکان میدهد موقعیت خود را در داخل فضاهای بسته با دقت سانتیمتر تعیین کنند. اساس پروتکل پخش بستههای BLE با شناسه یکتای حاوی UUID، Major و Minor است. طبق Apple iBeacon Design Guidelines (2025)، این فناوری در ناوبری در مراکز خرید، موزهها، فرودگاهها و استادیومها استفاده میشود و از تشخیص غیرفعال بدون جفتسازی فعال پشتیبانی میکند.
نکات کلیدی
iBeacon — فناوری موقعیتیابی داخلی است که توسط اپل توسعه یافته و در WWDC 2013 معرفی شده است. برخلاف GPS که در داخل ساختمانها کار نمیکند، iBeacon از بیکنهای Bluetooth Low Energy استفاده میکند — دستگاههای کوچک با باتری که بستههای شناسایی ثابت ارسال میکنند. دستگاههای iOS و Android این بستهها را دریافت کرده و فاصله تقریبی تا بیکن را بر اساس سطح سیگنال (RSSI) محاسبه میکنند.
پروتکل iBeacon اولین استاندارد انبوه بیکنهای BLE شد که توسط اپل در سال 2013 در iOS 7 راهاندازی شد. در ابتدا این فناوری در خردهفروشی استفاده میشد: فروشگاههای Apple Store از iBeacon برای اطلاعرسانی به مشتریان درباره تخفیفها هنگام ورود به مناطق خاص استفاده کردند. تا سال 2025، زیرساخت iBeacon شامل میلیونها بیکن نصب شده در سراسر جهان است، اگرچه پروتکلهای جایگزین — Eddystone از Google و AltBeacon با کد منبع باز — ظهور کردهاند.
iBeacon در پنج سناریوی اصلی استفاده میشود: ناوبری در فضاهای بسته (مراکز خرید، فرودگاهها، موزهها)، اعلانهای متنی (تخفیف هنگام ورود به فروشگاه)، خودکارسازی فرآیندهای کاری (ثبت حضور)، لجستیک و انبارداری، و همچنین راهنماهای توریستی با پخش خودکار محتوا هنگام نزدیک شدن به شی. طبق ABI Research (2025)، بازار بیکنهای BLE 3.2 میلیارد دستگاه در حال بهرهبرداری تخمین زده میشود.
بسته iBeacon — Advertising PDU (Protocol Data Unit) است که در کانال تبلیغاتی BLE در فرکانسهای 2402، 2426 و 2480 مگاهرتز ارسال میشود. فرمت بسته به طور دقیق مشخص شده و از چهار فیلد تشکیل شده است: پیشوند Apple iBeacon (0x4C000215)، UUID 16 بایتی، مقادیر Major 2 بایتی و Minor 2 بایتی، و TX Power 1 بایتی برای کالیبراسیون فاصله. اندازه کل داده 30 بایت است که در یک BLE Advertising PDU جای میگیرد.
| فیلد | اندازه | توضیحات |
|---|---|---|
| پیشوند اپل | 9 بایت | Company ID (0x004C) + iBeacon type (0x0215) |
| UUID | 16 بایت | شناسه یکتای سازمان یا برنامه |
| Major | 2 بایت | شناسه منطقه (0-65535)، مثلاً شماره فروشگاه |
| Minor | 2 بایت | شناسه نقطه (0-65535)، مثلاً شماره قفسه |
| TX Power | 1 بایت | قدرت سیگنال کالیبراسیون در فاصله 1 متری (dBm) |
شناسههای iBeacon یک سلسله مراتب سهسطحی تشکیل میدهند. UUID به سازمان (مثلاً زنجیره فروشگاه)، Major به فروشگاه یا طبقه خاص، و Minor به نقطه خاص در منطقه (منطقه صندوق، بخش کالا) اختصاص مییابد. این سلسله مراتب به برنامه اجازه میدهد به سطوح مختلف زمینه واکنش انعطافپذیر نشان دهد: هنگام ورود به فروشگاه (UUID + Major) برنامه میتواند نقشه طبقه را بارگذاری کند و هنگام نزدیک شدن به بخش خاص (Minor) اطلاعات محصول را نمایش دهد.
فیلد TX Power — مقدار مرجع سطح سیگنال (RSSI) در فاصله 1 متری از بیکن است. پس از دریافت بسته، دستگاه RSSI واقعی را ثبت کرده و فاصله را با فرمول محاسبه میکند: distance = 10^((TX_Power - RSSI) / (10 * n))، که در آن n ضریب تضعیف محیط (معمولاً 2-4) است. کالیبراسیون صحیح TX Power برای دقت موقعیتیابی حیاتی است: خطای 1 dBm تا 30٪ خطا در فاصله 5 متر ایجاد میکند.
iOS سه منطقه proximity را بر اساس فاصله محاسبه شده تا بیکن تعیین میکند: Immediate (کمتر از 0.5 متر)، Near (از 0.5 تا 3 متر) و Far (از 3 تا 30-50 متر بسته به شرایط). فاصله دقیق اعلام نمیشود — فقط دستهبندی. این عمدی است: RSSI تحت تأثیر تداخل، بازتاب سیگنال و تأثیر بدن انسان است، بنابراین دستهبندیها تعیین موقعیت پایدارتری را فراهم میکنند.
Immediate — منطقه تماس مستقیم، زمانی که دستگاه در چند سانتیمتری بیکن قرار دارد. برای سناریوهایی که نیاز به حداکثر دقت دارند استفاده میشود: پرداخت از طریق ترمینال، باز کردن قفل دیجیتال، تأیید در ایست بازرسی. در منطقه Immediate RSSI معمولاً از -30 تا -60 dBm است.
منطقه Near — منطقه کاری اصلی iBeacon است که فاصله 0.5 تا 3 متر را پوشش میدهد. برای ناوبری در فضاهای بسته استفاده میشود — مثلاً هنگام نزدیک شدن به ویترین کالا، برنامه اطلاعات دقیق را نمایش میدهد. در منطقه Near RSSI از -60 تا -80 dBm با کالیبراسیون TX Power = -59 dBm متغیر است.
Far — حداکثر منطقه تشخیص سیگنال بیکن. برای نظارت بر ورود به منطقه (مثلاً ورود به مرکز خرید) استفاده میشود. در مسافت Far RSSI معمولاً ضعیفتر از -80 dBm است و دقت تعیین فاصله به طور قابل توجهی کاهش مییابد. برای نظارت بر ورود از API های سیستمی region monitoring استفاده میشود، نه تعیین منطقه دقیق.
منطقه iBeacon — ناحیه مجازی است که توسط UUID (و اختیاری Major + Minor) تعیین میشود. iOS امکان نظارت بر حداکثر 20 منطقه را به طور همزمان با CLLocationManager فراهم میکند. هنگام ورود به منطقه، سیستم برنامه را حتی در پسزمینه یا حالت بسته بیدار کرده و از طریق delegate locationManager:didEnterRegion اعلان ارسال میکند. هنگام خروج از منطقه، locationManager:didExitRegion فراخوانی میشود.
import CoreLocation
let locationManager = CLLocationManager()
let region = CLBeaconRegion(
uuid: UUID(uuidString: "E2C56DB5-DFFB-48D2-B060-D0F5A71096E0")!,
identifier: "myBeaconRegion"
)
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
locationManager.startMonitoring(for: region)
برای تعیین منطقه (Immediate, Near, Far) از ranging — اسکن بیکنها در زمان واقعی استفاده میشود. برخلاف نظارت، ranging فقط در حالت فعال برنامه کار میکند و نیاز به مجوز دسترسی به موقعیت دارد. متد locationManager:didRangeBeacons:inRegion آرایهای از CLBeacon با فیلدهای proximity (CLProximity.immediate, .near, .far, .unknown)، accuracy (فاصله کالیبره شده بر حسب متر) و rssi برمیگرداند.
func locationManager(
_ manager: CLLocationManager,
didRangeBeacons beacons: [CLBeacon],
in region: CLBeaconRegion
) {
for beacon in beacons {
switch beacon.proximity {
case .immediate:
print("نزدیکی بیواسطه")
case .near:
print("نزدیکی نزدیک")
case .far:
print("نزدیکی دور")
default:
print("نزدیکی ناشناخته")
}
}
}
Android پشتیبانی داخلی از iBeacon ندارد، زیرا پروتکل یک راهحل اختصاصی اپل است. با این حال، با استفاده از کتابخانههای شخص ثالث مانند AltBeacon از Radius Networks (اکنون بخشی از سازمان Open Beacon)، توسعهدهندگان میتوانند iBeacon را در برنامههای Android ادغام کنند. کتابخانه AltBeacon اسکن بستههای BLE، تجزیه فرمت iBeacon و شبیهسازی ranging و نظارت بر منطقه مشابه API iOS را پیادهسازی میکند.
val beaconManager = BeaconManager.getInstanceForApplication(context)
beaconManager.beaconParsers.add(
BeaconParser().setBeaconLayout(
"m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"
)
)
beaconManager.backgroundBetweenScanPeriod = 5000
beaconManager.foregroundScanPeriod = 1100
beaconManager.bind(this)
فرمت تجزیه iBeacon در کتابخانه AltBeacon توسط رشته layout تعریف میشود: «m:2-3=0215» — بررسی دو بایت نشانگر iBeacon، «i:4-19» — UUID 16 بایتی، «i:20-21» — Major، «i:22-23» — Minor، «p:24-24» — TX Power. همین فرمت برای Eddystone و سایر پروتکلها نیز پشتیبانی میشود که AltBeacon را به کتابخانهای جهانی برای کار با بیکنهای BLE در Android تبدیل میکند.
در Android کار با iBeacon سه محدودیت کلیدی دارد: اسکن پسزمینه توسط تولیدکنندگان محدود میشود (Xiaomi، Huawei، Samsung اغلب فرآیندهای پسزمینه را میکشند)، دقت RSSI به دلیل تفاوت در پشتههای BLE کمتر از iOS است و برای اسکن از Android 6.0 به ACCESS_FINE_LOCATION و از Android 12 به BLUETOOTH_SCAN نیاز است.
Eddystone — پروتکل باز بیکنهای BLE از Google است که در سال 2015 معرفی شد. برخلاف iBeacon، Eddystone از چهار نوع بسته پشتیبانی میکند: Eddystone-UID (شناسه ثابت)، Eddystone-URL (انتقال URL برای Physical Web)، Eddystone-TLM (تلهمتری بیکن — سطح باتری، دما) و Eddystone-EID (شناسه رمزگذاری شده برای محافظت در برابر کلونینگ). اگرچه Google توسعه Physical Web را در سال 2022 متوقف کرد، پروتکل Eddystone همچنان در راهحلهای سازمانی استفاده میشود.
| پارامتر | iBeacon | Eddystone |
|---|---|---|
| مالک | Apple | Google (باز) |
| انواع بسته | 1 (UID) | 4 (UID, URL, TLM, EID) |
| داده | UUID+Major+Minor | ID/URL + تلهمتری |
| پشتیبانی بومی iOS | بله (CoreLocation) | خیر (از طریق CoreBluetooth) |
| Physical Web | خیر | بله (Eddystone-URL) |
| امنیت | بدون رمزگذاری | EID با چرخش کلید |
انتخاب بین iBeacon و Eddystone به پلتفرم هدف و سناریوی استفاده بستگی دارد. iBeacon به دلیل یکپارچهسازی بومی با CoreLocation و نظارت بر منطقه در پسزمینه برای برنامههای iOS ترجیح داده میشود. Eddystone برای پروژههای Android محور و سناریوهای Physical Web که بیکن URL را بدون نصب برنامه ارسال میکند مناسبتر است. برای پروژههای بین پلتفرمی اغلب از AltBeacon استفاده میشود که از هر دو پروتکل پشتیبانی میکند.
در هنگام پیادهسازی iBeacon، توسعهدهندگان با مجموعهای از محدودیتها مواجه میشوند که باید در مرحله طراحی معماری در نظر گرفته شوند. عدم توجه صحیح به این عوامل منجر به عملکرد ناپایدار ناوبری، فعالسازیهای نادرست و تخلیه سریعتر از حد انتظار باتری بیکنها میشود.
سطح سیگنال RSSI به دلیل انعکاس از دیوارها، سازههای فلزی، حضور افراد و سایر دستگاههای بیسیم در باند 2.4 گیگاهرتز نوسانات قابل توجهی دارد. در یک فضای بسته، پراکندگی RSSI برای یک بیکن میتواند در دقیقه به 10-15 dBm برسد که محاسبه فاصله را بدون استفاده از فیلترها (میانگین متحرک هموارسازی، فیلتر کالمن) نادقیق میکند.
iOS از نظارت بر حداکثر 20 منطقه به طور همزمان برای یک برنامه پشتیبانی میکند. برای پروژههایی که نیاز به پوشش منطقه وسیع دارند (فرودگاه، استادیوم) این کافی نیست. راهحل — جابهجایی پویای مناطق: هنگام ورود به یک منطقه، مناطق مجاور فعال و مناطق دور غیرفعال میشوند.
تأخیر بین ورود به منطقه و دریافت اعلان بسته به شرایط میتواند از 1 تا 30 ثانیه باشد. iOS برای صرفهجویی در باتری به صورت دورهای بیکنها را اسکن میکند، بنابراین نباید انتظار واکنش فوری داشت. برای سناریوهای حساس به زمان (باز کردن در هنگام نزدیک شدن) استفاده از Immediate ranging توصیه میشود، اما این فقط در حالت فعال برنامه کار میکند.
سوالات متداول
iBeacon — پروتکل اپل برای بیکنهای Bluetooth Low Energy است که به دستگاههای iOS و Android امکان میدهد موقعیت خود را در داخل فضاهای بسته با دقت سانتیمتر بر اساس تحلیل سطح سیگنال (RSSI) بستههای BLE دریافتی تعیین کنند.
Bluetooth — پروتکل کلی ارتباط بیسیم برای انتقال داده بین دستگاهها است که نیاز به جفتسازی دارد. iBeacon — پروتکل تخصصی بر روی BLE است که صرفاً برای پخش شناسهها بدون برقراری اتصال طراحی شده است. بیکنهای iBeacon داده منتقل نمیکنند — آنها فقط حضور خود را اعلام میکنند.
iBeacon در حالت Advertising کار میکند — بیکن به طور مداوم بستههای BLE پخشی با اطلاعات ID ارسال میکند. دستگاه بسته را دریافت میکند اما به بیکن متصل نمیشود. این به صرفهجویی در باتری بیکن (تا 2-3 سال کار با یک CR2032) و تشخیص غیرفعال بیکنها بدون اسکن فعال کمک میکند.
خیر، iBeacon برای یافتن دستگاهها طراحی نشده است. بیکنهای iBeacon فرستندههای ثابتی هستند و iPhone نقش گیرنده را ایفا میکند. iPhone سیگنالهای iBeacon ارسال نمیکند (به جز عملکرد Find My که از پروتکل دیگری بر پایه BLE استفاده میکند). برای یافتن تلفن از فناوریهای دیگر استفاده میشود (شبکه Find My، UWB).
برد iBeacon به تنظیمات بیکن و شرایط محیط بستگی دارد. برد معمول: Immediate — تا 0.5 متر، Near — تا 3 متر، Far — تا 30-50 متر. با استفاده از بیکنهای تقویتکننده سیگنال و در فضاهای باز، برد میتواند به 70 متر برسد، اما دقت تعیین فاصله در چنین مسافتی حداقل است.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید