iOS 应用无法识别我的信标

Posted

技术标签:

【中文标题】iOS 应用无法识别我的信标【英文标题】:iOS app does not recognize my beacon 【发布时间】:2016-07-10 06:04:01 【问题描述】:

我上周刚刚发现了 iBeacon,并想尝试一下。我在亚马逊上买了这个信标。 https://www.amazon.com/gp/product/B010Q2PUGA/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 使用 Light Blue 应用程序,我能够读取信标信息(UUID、Major、Minor 等),因此我知道信标正在广播。 按照本教程,我制作了一个应用程序来熟悉信标编程。 (使用我的 UUID)代码有一个小改动,由于 swift 版本,我不得不将 println 更改为打印。 https://willd.me/posts/getting-started-with-ibeacon-a-swift-tutorial 尽管如此,我的应用程序似乎无法识别我的信标。在我的日志/调试区域中,我只看到:

[]
[]
[]

我的代码是:

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate 


    let locationManager = CLLocationManager()
    let region = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: "8EBB5704-9697-02C9-D073-BF9162B72D7B")!, identifier: "iBeacon-6713")
//    let region = CLBeaconRegion(proximityUUID: NSUUID(UUIDString: "8EBB5704-9697-02C9-D073-BF9162B72D7B")!, major: 11046, minor: 11047, identifier: "ibeacon")

    override func viewDidLoad() 
        super.viewDidLoad()

        locationManager.delegate = self;
        if (CLLocationManager.authorizationStatus() != CLAuthorizationStatus.AuthorizedWhenInUse) 
            locationManager.requestWhenInUseAuthorization()
        
        locationManager.startRangingBeaconsInRegion(region)
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

//    func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) 
//        print(beacons)
//    
    func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) 
        print(beacons)
    


xcode:版本 7.3.1 (7D1014)

OS X El Capitan:版本 10.11.5 (15F34)

ios:版本 9.3.2(13F69)

Apple Swift 2.2 版 (swiftlang-703.0.18.8 clang-703.0.31)

【问题讨论】:

【参考方案1】:

我怀疑 8EBB5704-9697-02C9-D073-BF9162B72D7B 不是信标的 Proximity UUID。 LightBlue 将为蓝牙设备显示许多不同的 UUID,并非所有的 UUID 都是 ProximityUUID。与任何 iOS 应用程序一样,LightBlue 必须知道 PriximityUUID 才能使用 CoreLocation 检测信标。如果没有,它仍然可以使用 CoreBluetooth 检测蓝牙传输,但无法读取 iBeacon 标识符。这可能就是正在发生的事情。

您需要找出设备的 ProximityUUID。如果您无法按照制造商的说明执行此操作,您可以使用带有Locate 应用程序的 android 设备,该应用程序可以读取 iBeacon UUID,而无需预先知道标识符。 iOS 设备无法做到这一点。

【讨论】:

感谢您的回复。不幸的是,该装置完全没有文档,而且我没有安卓设备.... 好吧,我找到了一个 Windows 应用程序,它给了我不同的 UUID 以及 Major 和 Minor 的整数值。现在一切正常!感谢您的信息。

以上是关于iOS 应用无法识别我的信标的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 beta 5 Game Center Sandbox 无法识别我的应用

iOS 测试目标无法识别主应用程序的文件

Passbook 无法识别 iBeacon

iOS - 添加约束后无法识别触摸

iOS 开发:将我的 iPhone 4 更新到 iOS 4.3 Beta 3 后,我的应用程序显示“Game Center 无法识别此游戏”

iOS:部署企业应用程序时,APNs 显然无法识别设备令牌