<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                > [Turning an iOS Device into an iBeacon](https://developer.apple.com/documentation/corelocation/turning_an_ios_device_into_an_ibeacon?language=occ) 學習如何在iOS設備上播放 iBeacon 信號。 ### 第1節 概述 任何支持使用藍牙低功耗共享數據的 iOS 設備都可以轉換成 iBeacon 。使用 iOS 設備作為 iBeacon 的應用程序必須在前臺運行。因此,對于應用程序來說,無論如何都要在前臺運行該功能。對于其他類型的 iBeacon 實現,請使用來自第三方制造商的專用信標硬件。 要將 iOS 設備用作 iBeacon,請執行以下操作: 1. 為設備獲取或生成一個128位的 UUID。 2. 創建一個包含 UUID 值的 CLBeaconRegion 對象,以及適合信標的 major 和 minor 值。 3. 使用 Core Bluetooth 框架來發送信標信息。 ### 第2節 獲取設備的 UUID 識別 iBeacon 的主要方式是來自其 UUID 。在部署一個或多個信標時,需要為每個信標分配一個 UUID,以將信標的用途傳達給客戶端。你定義的內容決定信標的用途。例如,百貨商店可能為其所有已部署的信標使用相同的 UUID,或者每個商店可能會分配一個不同的 UUID。因為檢測涉及使用區域監視來查找具有特定 UUID 的信標,所以使用更少的 UUID 更容易管理。 要為 iBeacon 部署創建一個新的 UUID ,請使用 uuidgen 命令行工具。打開終端,在命令行上輸入 uuidgen,并按 Return。 該工具生成一個惟一的128位值,并將其格式化為一個ASCII字符串,該字符串被連字符分割斷,如清單1所示。 ###### 清單1 從命令行生成一個UUID ``` $ uuidgen 39ED98FF-2900-441A-802F-9C398FC199D2 ``` ### 第3節 配置 CLBeaconRegion 對象 使用 CLBeaconRegion 對象來配置信標的身份。可以使用信標區域生成一個信息字典,可以稍后通過藍牙進行廣播。清單2顯示了如何創建一個信標區域對象并填充信息。 ###### 清單2 配置信標的身份 ``` //Swift func createBeaconRegion() -> CLBeaconRegion? { let proximityUUID = UUID(uuidString: "39ED98FF-2900-441A-802F-9C398FC199D2") let major : CLBeaconMajorValue = 100 let minor : CLBeaconMinorValue = 1 let beaconID = "com.example.myDeviceRegion" return CLBeaconRegion(proximityUUID: proximityUUID!, major: major, minor: minor, identifier: beaconID) } //Objective-C NSUUID *proximityUUID = [[NSUUID alloc] initWithUUIDString:@"39ED98FF-2900-441A-802F-9C398FC199D2"]; CLBeaconMajorValue majorValue = 100; CLBeaconMinorValue minorValue = 10; CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid major:majorValue minor:minorValue identifier:@"com.example.myDeviceRegion"]; ``` UUID,major,minor 值是特定于 iBeacon 實施的。你決定這些值的含義,并決定檢測信標的應用程序如何解讀使用這些值。 ### 第4節 通過藍牙發送 iBeacon 廣播 要從 iOS 設備上廣播信標的身份,請使用 Core Bluetooth 框架將 iOS 設備配置為藍牙外設。當配置為外設時,iOS 設備將使用藍牙硬件向其他設備廣播其信標信息。其他設備使用該信息來執行測距并檢測其與 iOS 設備的距離。 將 Core Bluetooth 框架添加到 Xcode 工程中。在代碼中,創建一個 [CBPeripheralManager](https://developer.apple.com/documentation/corebluetooth/cbperipheralmanager?language=objc) 對象并調用它 [startAdvertising:](https://developer.apple.com/documentation/corebluetooth/cbperipheralmanager/1393252-startadvertising?language=objc) 方法來開始廣播信標數據。[startAdvertising:](https://developer.apple.com/documentation/corebluetooth/cbperipheralmanager/1393252-startadvertising?language=objc) 方法使用包含信標信息的字典作為參數。調用之前創建的 [CLBeaconRegion](https://developer.apple.com/documentation/corelocation/clbeaconregion?language=objc) 的 [peripheralDataWithMeasuredPower:](https://developer.apple.com/documentation/corelocation/clbeaconregion/1621494-peripheraldatawithmeasuredpower?language=objc) 方法,以獲取包含與信標相關聯的數據的字典。 ###### 清單3 通過藍牙廣播設備 ``` //Swift func advertiseDevice(region : CLBeaconRegion) { let peripheral = CBPeripheralManager(delegate: self, queue: nil) let peripheralData = region.peripheralData(withMeasuredPower: nil) peripheral.startAdvertising(((peripheralData as NSDictionary) as! [String : Any])) } //Objective-C NSDictionary *peripheraData = [beaconRegion peripheralDataWithMeasuredPower:nil]; CBPeripheralManager *peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil]; [peripheralManager startAdvertising:peripheraData]; ``` 調用 [peripheralDataWithMeasuredPower:](https://developer.apple.com/documentation/corelocation/clbeaconregion/1621494-peripheraldatawithmeasuredpower?language=objc) 方法獲取數據字典時,通常會傳遞 nil 來指定與 iOS 設備關聯的默認接收信號強度指示(RSSI)值。此參數表示從離設備一米遠處測得的信號強度(以分貝為單位)。如果需要在某些環境中校準設備以獲得更好的測距性能,則可以指定自定義值。 在創建外圍管理器對象時,它會調用其委托對象的 [peripheralManagerDidUpdateState:](https://developer.apple.com/documentation/corebluetooth/cbperipheralmanagerdelegate/1393271-peripheralmanagerdidupdatestate?language=objc) 方法。必須實施此代表方法,以確保在 iOS 設備上支持并使用 BLE 。 > 重要提示 > 在將應用作為一個 iBeacon 進行廣播之后,應用必須繼續在前臺運行,以播放所需的藍牙信號。如果用戶退出應用,系統就會停止在藍牙設備上做廣播。 在測距期間,可能會有一段短暫的時間,Core Location 為同一個 iOS 設備創建兩個 [CLBeacon](https://developer.apple.com/documentation/corelocation/clbeacon?language=objc) 對象。出現這種情況的原因是 iOS 定期更改設備的 Bluetooth 標識符以保護用戶的隱私,一個信標代表舊標識符,一個信標代表新標識符。在標識符更改的2秒內,具有舊標識符的信標將其接近度屬性設置為 [CLProximityUnknown](https://developer.apple.com/documentation/corelocation/clproximity/clproximityunknown?language=objc)。在10秒鐘之內,舊的標識符不再被報告。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看