CoreBluetooth لـ Swift: دليل شامل لـ Bluetooth Low Energy
1. ما هو CoreBluetooth ولماذا تحتاجه
CoreBluetooth هو إطار عمل (Framework) من Apple يوفر واجهة برمجة تطبيقات (API) للتواصل مع الأجهزة عبر بروتوكول Bluetooth Low Energy (BLE، Bluetooth 4.0 فما فوق). وهو جزء من iOS SDK و macOS SDK، مما يجعله الأداة الأصلية للتطوير ضمن نظام Apple البيئي. على عكس Bluetooth التقليدي، يركز BLE على استهلاك طاقة منخفض للغاية، مما يجعله مثالياً للأجهزة القابلة للارتداء، وأجهزة الاستشعار، والأقفال الذكية، وأجهزة تتبع اللياقة البدنية، وأجهزة إنترنت الأشياء (IoT).
لماذا تحتاج CoreBluetooth؟ إذا كنت تطور تطبيق iPhone يحتاج إلى تبادل البيانات مع جهاز مراقبة معدل ضربات القلب، أو التحكم في لمبة ذكية، أو قراءة بيانات من محطة أرصاد جوية، فستحتاج إلى هذا الإطار. فهو يتولى جميع المهام منخفضة المستوى: مسح الأجهزة القريبة، إنشاء الاتصال، اكتشاف الخدمات والخصائص، وقراءة/كتابة البيانات. يعمل CoreBluetooth في دورين: Central (الجهاز الذي يبحث ويتصل) و Peripheral (الجهاز الذي يعلن عن نفسه ويوفر البيانات). في هذه المقالة، سنركز على دور Central لأنه الأكثر استخداماً في التطبيقات.
من المهم أن تعرف أن CoreBluetooth ليس مكتبة خارجية، بل هو إطار عمل نظامي. لا تحتاج إلى تثبيته عبر مدير حزم، فهو متاح مباشرة في Xcode. ومع ذلك، للعمل بشكل صحيح، يجب إضافة وصف لاستخدام Bluetooth في ملف Info.plist (المفتاح NSBluetoothAlwaysUsageDescription لنظام iOS 13+ أو NSBluetoothPeripheralUsageDescription للإصدارات الأقدم).
2. التثبيت
لا يتطلب CoreBluetooth تثبيتاً عبر pip أو CocoaPods. إنه جزء من مكتبة Apple القياسية. لإضافة الإطار إلى مشروعك:
- افتح مشروعك في Xcode.
- اختر target التطبيق الخاص بك.
- انتقل إلى علامة التبويب "General" ← "Frameworks, Libraries, and Embedded Content".
- اضغط على "+" واختر
CoreBluetooth.framework.
أو ببساطة أضف الاستيراد في الكود:
import CoreBluetooth
للعمل مع Bluetooth على المحاكي (iOS 14+ و macOS 11+)، سيعمل هذا أيضاً، لكن أجهزة BLE الحقيقية متاحة فقط على الأجهزة الفعلية. على المحاكي، يمكنك اختبار منطق المسح والاتصال فقط، وليس نقل البيانات.
3. بداية سريعة — مثال عملي بسيط
فيما يلي كود بسيط يقوم بتهيئة الجهاز المركزي (Central Manager) ويبدأ مسح جميع أجهزة BLE المتاحة. يتم عرض النتيجة في وحدة التحكم.
import UIKit
import CoreBluetooth
class ViewController: UIViewController, CBCentralManagerDelegate {
var centralManager: CBCentralManager!
override func viewDidLoad() {
super.viewDidLoad()
// تهيئة Central Manager مع المفوض (delegate)
centralManager = CBCentralManager(delegate: self, queue: nil)
}
// MARK: - CBCentralManagerDelegate
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch central.state {
case .poweredOn:
print("Bluetooth قيد التشغيل. بدء المسح...")
// بدء مسح جميع الأجهزة
centralManager.scanForPeripherals(withServices: nil, options: nil)
case .poweredOff:
print("Bluetooth متوقف عن العمل")
case .unauthorized:
print("التطبيق غير مصرح له باستخدام Bluetooth")
case .unknown:
print("حالة Bluetooth غير معروفة")
case .unsupported:
print("الجهاز لا يدعم BLE")
case .resetting:
print("إعادة تعيين Bluetooth")
@unknown default:
print("حالة غير معروفة")
}
}
func centralManager(_ central: CBCentralManager,