标签: ibeacon

locationManager:didRangeBeacons方法未检测到BLE设备

我正在使用Nordic BLE nRF8001开发套件来测试CoreBluetooth.使用CBCentralManager的方法(例如didDiscoverPeripheral(),didConnectPeripheral()等),我的iPhone 5能够检测到北欧设备的广告并连接到它就好了.但是,我没有收到新的locationManager range或regionMonitoring方法的任何响应.下面我将解释我的设置:

1.)首先,我使用传入的外围设备(我的Nordic设备)在didDiscoverPeripheral()委托方法中从我的Nordic设备检索我的NSUUID.我为我的Nordic设备创建了一个自定义服务,所以假设这个外围设备是Nordic设备.要检索我使用的NSUUID:

    NSUUID *uuid = [peripheral identifier];  
    NSString *uuidString = [uuid UUIDString]; //uuidString = 9A8D4C73-152D-BBDA-E4C2-9CE952654645
Run Code Online (Sandbox Code Playgroud)

2.)接下来,我为我的Nordic设备创建一个信标区域并创建一个CLLocationManager:

    self.locationManagerBeacon = [[CLLocationManager alloc] init];
    [self.locationManagerBeacon setDelegate:self];
    NSUUID *myUUID = [[NSUUID alloc] initWithUUIDString:@"9A8D4C73-152D-BBDA-E4C2-9CE952654645"];
    self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:myUUID
                                                      identifier:@"nordicRegion"];
    self.beaconRegion.notifyEntryStateOnDisplay = YES;
Run Code Online (Sandbox Code Playgroud)

3.)现在我开始监控信标区域

[self.locationManagerBeacon startRangingBeaconsInRegion:self.beaconRegion];
Run Code Online (Sandbox Code Playgroud)

4.)问题:locationManager:didRangeBeacons:调用inRegion,但信标区域始终为空.

问题:Nordic BLE设备是否需要以某种方式配置,以便新的locationManager信标方法能够检测到它(例如BLE广告频率,功率电平等)?如果是这样,有人可以指向我的文档.

感谢帮助!

iphone bluetooth ios ibeacon

2
推荐指数
1
解决办法
3662
查看次数

iBeacon测距和接近是有缺陷的

我正在上课来处理我所有的iBeacon测试.它的目的是开始寻找区域,范围信标,识别它们然后发送通知.代码如下.

我遇到的问题是应用程序运行速度非常慢,我知道iBeacons有延迟问题,有时只是停止工作(不会识别关闭信标).我知道,我的代码很混乱,在我清理它之前尝试对逻辑进行排序.我想知道我是否错过了一个逻辑缺陷(我的意思是,我想知道我引入了哪些逻辑漏洞!).

#import "dcBeaconManager.h"

@implementation dcBeaconManager

@synthesize currentBeaconState;

bool testRanging = false;
int firstRegionEntered = 0;
int beaconsRangedCount = 0;

- (void)initBeaconManager {
    NSLog(@"initBeaconManager called");
    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    NSUUID *uuid = [[NSUUID alloc]initWithUUIDString:@"B9407F30-F5F8-466E-AFF9-25556B57FE6D"];
    self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:@"digiConsRegion"];
    [self.locationManager startMonitoringForRegion:self.beaconRegion];
    [self.locationManager requestStateForRegion:self.beaconRegion];

    currentBeaconState = @"initial";
}

- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region {
    NSLog(@"Started looking for regions");
    [self.locationManager requestStateForRegion:self.beaconRegion];
}

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
    NSLog(@"Region discovered");
    if (firstRegionEntered == 0) {
        NSLog(@"First time …
Run Code Online (Sandbox Code Playgroud)

cllocationmanager nsnotificationcenter ios ibeacon

2
推荐指数
1
解决办法
2657
查看次数

使用不同的UUID检测iBeacons

我正在尝试使用UUID作为特定信标的标识符(在这种情况下使用手机).我知道major和minor用于执行此操作,但我宁愿使用UUID或标识符字符串.

话虽如此,无论如何使用CLBeacon API扫描信标是否有UUID?

ios ibeacon

2
推荐指数
1
解决办法
4421
查看次数

测距信标间隔

在iOS上,在我的应用程序委托中,我开始进行区域监视,一旦进入信标区域,我就使用locationManager:didRangeBeacons:inRegion启动测距逻辑.根据Apple文档,只有当区域在范围内或超出范围或范围发生变化时,才应调用此方法.

我的问题是,只要我在区域内,我每秒都会调用此方法.如何在仍然测距的情况下减少对此方法的调用次数?

region cllocationmanager ios ibeacon

2
推荐指数
1
解决办法
3377
查看次数

iBeacon app - 同时接收/发送

我的应用程序如何同时传输其iBeacon(以宣传自己)和其他iBeacons的范围(以发现运行相同应用程序的对等体)?

那里有代码样本吗?

ios bluetooth-lowenergy ibeacon

2
推荐指数
1
解决办法
2130
查看次数

应用程序侦听多个UUID

ios App是否可以收听多个UUID?专门针对苹果iBeacon技术.

NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:@"23542266-18D1-4FE4-B4A1-23F8195B9D39"];
    self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:@"com.devfright.myRegion"];
    [self.locationManager startMonitoringForRegion:self.beaconRegion];
Run Code Online (Sandbox Code Playgroud)

使用此代码可以开始监视以下uuid:23542266-18D1-4FE4-B4A1-23F8195B9D39,如果我要添加另一个类听另一个uuid,这会工作,不会有任何干扰吗?也许添加几个听众?

uuid monitor ios ibeacon

2
推荐指数
1
解决办法
2729
查看次数

使用CoreBluetooth可以获得蓝牙LE设备的原始扫描记录

我正在努力更好地了解蓝牙LE,并一直在玩iOS和Android的蓝牙堆栈和各种信标(StickNFind,Estimote等......)

  • 在Android上,当一个设备被发现时,我得到一个原始的"扫描记录" - 我可以解析自己的一小段数据来获取设备的广告数据.
  • 在iOS上,这由iOS解析并显示为字典.

很公平,除了我试图使用CoreBluetooth(即:非位置服务)从iBeacon读取广告数据,并注意到iOS似乎剥离了iBeacon设备的制造商特定广告数据.

我意识到我应该使用Apple批准的方法来检测iBeacons,但它并不适合我们的用例,并想知道是否有办法解决它.

bluetooth ios ibeacon

2
推荐指数
1
解决办法
2247
查看次数

检查是否接受NSLocationWhenInUseUsageDescription

我正在开发一个处理信标和位置管理的iOS应用程序.在iOS 8中,应用程序必须在plist文件中包含"NSLocationWhenInUseUsageDescription"键,该文件将在启动时显示在应用程序中,以获得用户启用位置跟踪的权限.如何检测用户是否接受?我想就此作出决定.

谢谢.

ios ibeacon ios8

2
推荐指数
1
解决办法
345
查看次数

撰写CBC特色的问题

我目前正在研究一个扫描我的公司信标的BLE应用程序,我需要更新CBC特性的值.

写入函数后我没有收到任何错误,但更改并未反映在BLE设备上.

我扫描了所有CBC特性,然后遍历以获取特定的并调用写入功能

for (CBCharacteristic* characteristic in beaconCharacteristics)
{
    if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:@"FFF5"]]) {
        [characteristic.service.peripheral writeValue:[@"BeaconE" dataUsingEncoding:NSUTF8StringEncoding] forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
    }
}
Run Code Online (Sandbox Code Playgroud)

甚至我在写完后没有错误就得到了完成委托方法

-(void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error
{
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?是否由于十六进制值?

请指导我

谢谢 !

objective-c ios core-bluetooth bluetooth-lowenergy ibeacon

2
推荐指数
1
解决办法
3062
查看次数

Ionic2:取消订阅事件以避免重复条目?

我已经按照本教程概述了在Ionic 2应用程序中添加监控信标.我有它工作得很好:当视图加载时,它初始化并开始监听信标:

home.ts

    ionViewDidLoad() {
        this.platform.ready().then(() => {
            this.beaconProvider.initialise().then((isInitialised) => {
                if (isInitialised) {
                    this.listenToBeaconEvents();
                }
            });
        });
    } 
Run Code Online (Sandbox Code Playgroud)

这将调用listenToBeaconEvents函数,该函数使用所有信标填充视图中的列表:

home.ts

    listenToBeaconEvents() {
        this.events.subscribe(‘didRangeBeaconsInRegion’, (data) => {

            // update the UI with the beacon list
            this.zone.run(() => {

                this.beacons = [];

                let beaconList = data.beacons;
                beaconList.forEach((beacon) => {
                    let beaconObject = new BeaconModel(beacon);
                    this.beacons.push(beaconObject);
                });

            });

        });
    }
Run Code Online (Sandbox Code Playgroud)

我可以使用this.beaconProvider.stopRanging()以下函数调用函数来停止测距:

信标provider.ts

    stopRanging() {
        if (this.platform.is('cordova')) {
            // stop ranging
            this.ibeacon.stopRangingBeaconsInRegion(this.region)
                .then(
                () => {
                    console.log('Stopped …
Run Code Online (Sandbox Code Playgroud)

ibeacon ionic-framework ionic2

2
推荐指数
1
解决办法
5934
查看次数