zoukankan      html  css  js  c++  java
  • 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数据   

  • 相关阅读:
    Apicloud_(模板)登陆注册功能模板
    Apicloud_(接口验证)用户注册头部信息X-APICloud-AppKey生成
    Apicloud_(项目)网上书城02_后端数据获取
    Apicloud_(项目)网上书城01_前端搭建
    R_Studio(时序)Apriori算法寻找频繁项集的方法
    R_Studio(聚类)针对iris数据比较几种聚类方法优劣
    R_Studio(神经网络)BP神经网络算法预测销量的高低
    JavaWeb_(SSH论坛)_七、辅助模块
    JavaWeb_(SSH论坛)_六、点赞模块
    JavaWeb_(SSH论坛)_五、帖子模块
  • 原文地址:https://www.cnblogs.com/ZhangShengjie/p/7522151.html
Copyright © 2011-2022 走看看