• iOS ibeacon 使用详解


    前段时间写项目,设计到了通过蓝牙ibeacon 的方式接收数据,最开始自己都之前都没听过什么叫ibeacon,然后就开始查资料,慢慢的也了解并知道了ibeacon怎么使用了。先大概解释下ibeacon到底是个什么,在我理解ibeacon可以理解为一个发射信号的基站,类似于移动的信号塔。手机作为一个设备时,进入到了发射基站的信号覆盖范围内,那么手机就能够收到基站发出的信息,这里就是所谓的ibeacon数据。当然也要基站发送数据手机才能够接受到数据。

    下面说说ibeacon的使用。

    1 首先需要需要在项目plist 中配置 Privacy - Location Always Usage Description 让程序允许使用位置

    2 要使用ibeacon ,需要在项目中导入  CoreLocation 框架

    3 实例化一个位置管理者对象,这里叫做 CLLocationManager ,再实例化一个ibeacon 对象: CLBeaconRegion

        self.locationmanager = [[CLLocationManager alloc]
                                
                                init];//初始化
        
        self.locationmanager.delegate = self;
        _locationmanager.distanceFilter=10;//实时更新定位位置
        _locationmanager.desiredAccuracy=kCLLocationAccuracyBest;//定位精确度
        self.beacon1 = [[CLBeaconRegion alloc]
                        
                        initWithProximityUUID:[[NSUUID alloc]
                                               
                                               initWithUUIDString:BEACONUUID]
                        
                        identifier:@"media"];//初始化监测的iBeacon信息

      [self.locationmanager requestAlwaysAuthorization];

    4 当位置管理者的代理被调用,知道了可以时刻使用用户的位置时然后开始读取指定beacon的数据

    -(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
        if (status == kCLAuthorizationStatusAuthorizedAlways) {
            
            [self.locationmanager startMonitoringForRegion:self.beacon1];//开始
            [self.locationmanager startRangingBeaconsInRegion:self.beacon1];
            
        }
    }
    

     5 当手机进入到了硬件设备的区域之后就会收到硬件设备发出的beacon 信息

    - (void)locationManager:(CLLocationManager *)manager
    
            didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion
                                                         
                                                         *)region{
        
        //如果存在不是我们要监测的iBeacon那就停止扫描他
        if (![[region.proximityUUID UUIDString]
              
              isEqualToString:BEACONUUID]){
            
            [self.locationmanager stopMonitoringForRegion:region];
            
            [self.locationmanager stopRangingBeaconsInRegion:region];
            
        }
        
        //打印所有iBeacon的信息
        for (CLBeacon* beacon in beacons) {
            NSLog(@"rssi is :%ld-=mj%d-====min%d",beacon.rssi,beacon.major.intValue,beacon.minor.intValue);
        }
    }
    

    如果在硬件范围内,硬件一直在发射信号,那么手机就会一直收到硬件的ibeacon数据   

  • 相关阅读:
    vue 画/生成二维码
    2017年要学习的三个CSS新特性
    最好的Angular2表格控件
    最详细win7下手动搭建PHP环境:apache2.4.23+php7.0.11
    Javascript实现页面跳转的几种方式
    windows环境下sublime的nodejs插件详细安装图解
    CSS3 动画
    框架基础:ajax设计方案(一)---集成核心请求
    框架基础:ajax设计方案(二)---集成轮询技术
    框架基础:ajax设计方案(三)---集成ajax上传技术
  • 原文地址:https://www.cnblogs.com/ZhangShengjie/p/7522151.html
Copyright © 2020-2023  润新知