亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iBeacon開發筆記

2019-11-14 18:07:43
字體:
來源:轉載
供稿:網友

iBeacon開發筆記

 

2015.10.19

airlocate

=========

airlocate顯示如何使用這個監控范圍clbeaconregions。

代碼還提供了一個例子,你如何能校準和配置iOS設備作為信標corebluetooth。

您可以配置一個iOS設備作為信標如下:

1)獲得兩個iOS設備配備藍牙LE。一個將是目標設備,一個將是一個遠程(校準)設備。

2)負載和啟動這個應用程序在這兩個設備上。

3)通過選擇配置和打開啟用的開關,將目標設備轉為信標。

4)取校準裝置,并將一米距離的目標設備移動。

5)在校準裝置上通過選擇校準校準過程。

6)從表格視圖中選擇目標設備。

7)校準過程將開始。你應該在這一過程中,在這個過程中,從一邊到另一邊的校準裝置的波。

8)當校準過程完成后,它會顯示一個校準的rssI值在屏幕上。

9)在目標設備上,返回到配置屏幕并輸入該值在測量功率下。

注:校準過程是可選的,但建議將微調范圍為您的環境。

您可以配置一個iOS設備沒有校準它不指定測量功率信標。

如果未指定測量功率,CoreLocation默認為預定值。

一旦你設置你的目標設備作為一個燈塔,你可以使用這個應用程序演示燈塔范圍和監測。

要演示范圍,選擇遠程設備。alrangingviewcontroller范圍一套clbeaconregions。

要演示監控,選擇遠程設備監控。almonitoringviewcontroller允許您配置一個clbeaconregion監測。

版權所有(2013)蘋果公司保留所有權利。

零.寫在前面

關于測試:建議下載Estimote的app,作為基站,得到它的UUID,majon,minor參數。

關于設備:iBeacon 使用 Bluetooth LE 技術,所以你必須要有一個內置有低功耗藍牙的 iOS 設備以便與 iBeacon 協同工作。目前這個列表里包含如下一些設備:

  • iphone 4s 或更新的
  • 第三代 iPad 或更新的
  • iPad mini 或更新的
  • 第五代iPod touch 或更新的
  • 系統版本7.0以上

測試結果:rssi信號輕度大概到-90,有效距離大概為30m。

用途:藍牙BLE,定位,智能家居等。自己還做了個上班打卡的 app,只有進入有效范圍內才能打卡成功。

UUID、主要、次要標識符

如果你不熟悉%20iBeacon,你可能也不熟悉術語%20UUID主要值(major%20value)%20和%20次要值(minor%20value)。

一個%20iBeacon%20除了是一個低功耗藍牙設備之外什么也不是,它們以特定結構發布信息。這些特定的東西超出本教程的范圍,但要明白的一件重要事情是%20iOS%20之所以能夠監控這些%20iBeacon%20就是基于%20UUID、主要值%20和%20次要值。

UUDID%20是%20Universally%20Unique%20Identifier(通用唯一標識符)的縮寫,它實際上是一個隨機字符串;B558CBDA-4472-4211-A350-FF1196FFE8C8%20就是一個例子。在%20iBeacon%20的討論范圍里,一個%20UUID%20通常用于表示你的頂層標識。作為開發者如果你生成一個%20UUID%20并將其分配給你的%20iBeacon%20設備,那么當一個設備檢測到你的%20iBeacon%20時,它就知道它是在和哪個%20iBeacon%20通信。

主要值與次要值在%20UUID%20之上提供了稍多的粒度。這些值只是%2016%20位無符號整數,能夠標識每個單獨的%20iBeacon%20,甚至是具有同樣%20UUID%20的哪些。

舉個例子,如果你有多間百貨公司,那么你所有的%20iBeacon%20發射器都可有同一個%20UUID%20,但每個店都有它自己的主要值,而里面的每個部門就會有它自己的次要值。你的應用能夠對一個位于你在邁阿密、佛羅里達店的鞋類部們里的%20iBeacon%20做出響應。

一.iBeacon的使用

開始監聽你的Ibeacon。

在iOS8里面蘋果改變了地位的開啟方式(iBeacon的使用是基于藍牙和定位的),首先要在工程里的info.plist增加字段NSLocationAlwaysUsageDescription(這個是允許一直在后臺運行的)

可能你會有些奇怪 iBeacon 會與 Core Location 相關,畢竟它是藍牙設備,但考慮到 iBeacon 提供微定位信息對應 GPS 提供宏定位信息,也就不奇怪了。在將一個 iOS 設備當作一個iBeacon 而編程時,你就要利用 Core Bluetooth 框架,而在監控 iBeacon 時,你只需同 Core Location 打交道。

當程序運行起來你會發現,設備左下角有你的程序 icon 圖標

.h文件

#import<UIKit/UIKit.h>

#import<CoreLocation/CoreLocation.h>

@interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate,CLLocationManagerDelegate>

@PRoperty (nonatomic, strong) NSArray *beaconArr;//存放掃描到的iBeacon

@property (strong, nonatomic) CLBeaconRegion *beacon1;//被掃描的iBeacon

@property (strong, nonatomic) CLLocationManager * locationmanager;

@end

.m文件

#define BEACONUUID @"12334566-7173-4889-9579-954995439125"http://iBeacon的uuid可以換成自己設備的uuid

- (void)viewDidLoad {

[super viewDidLoad];

self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 20, 320, 568)];

self.tableView.delegate = self;

self.tableView.dataSource = self;

[self.view addSubview:self.tableView];

self.beaconArr = [[NSArray alloc] init];

self.locationmanager = [[CLLocationManager alloc] init];//初始化

self.locationmanager.delegate = self;

self.beacon1 = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:BEACONUUID] identifier:@"media"];//初始化監測的iBeacon信息

[self.locationmanager requestAlwaysAuthorization];//設置location是一直允許

}

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{

if (status == kCLAuthorizationStatusAuthorizedAlways) {

[self.locationmanager startMonitoringForRegion:self.beacon1];//開始MonitoringiBeacon

}

}

{

//發現有iBeacon進入監測范圍

-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region{

[self.locationmanager startRangingBeaconsInRegion:self.beacon1];//開始RegionBeacons

}

//找的iBeacon后掃描它的信息

- (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",beacon.rssi);

NSLog(@"beacon.proximity %ld",beacon.proximity);

......

}

self.beaconArr = beacons;

[self.tableView reloadData];

}

 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return self.beaconArr.count;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *ident = @"cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ident];

if (!cell) {

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ident];

}

CLBeacon *beacon = [self.beaconArr objectAtIndex:indexPath.row];

cell.textLabel.text = [beacon.proximityUUID UUIDString];

NSString *str;

switch (beacon.proximity) {

case CLProximityNear:

str = @"近";

break;

case CLProximityImmediate:

str = @"超近";

break;

case CLProximityFar:

str = @"遠";

break;

case CLProximityUnknown:

str = @"不見了";

break;

default:

break;

}

cell.detailTextLabel.text = [NSString stringWithFormat:@"%@ %ld %@ %@",str,beacon.rssi,beacon.major,beacon.minor];

return cell;

}

//一些錯誤處理,因為你正在同非常具體的硬件特性打交道,你需要知道任何原因導致的監控和測距失敗

- (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error {    NSLog(@"Failed monitoring region: %@", error);}- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {    NSLog(@"Location manager failed: %@", error);}

二.ibeacon的參數

uuid唯一標識此類iBeacon。

proximity遠近范圍的,有Near(在幾米內),Immediate(在幾厘米內),Far(超過 10 米以外,不過在測試中超不過10米就是far),Unknown(無效)

major和minor組合后區分同一類型下的iBeacon。

accuracy和iBeacon的距離

rssi信號輕度為負值,越接近0信號越強,等于0時無法獲取信號強度

 

三.通知

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {    if ([region isKindOfClass:[CLBeaconRegion class]]) {        UILocalNotification *notification = [[UILocalNotification alloc] init];        notification.alertBody = @"Are you forgetting something?";        notification.soundName = @"Default";        [[UIapplication sharedApplication] presentLocalNotificationNow:notification];    }}

你的位置管理器將在你離開某個區域時調用上面的方法,這就是這個應用有用的時刻。你不需要在你接近你的電腦包時被告知,只需在你離開它太遠時通知你。

此處你檢查區域是否是一個 CLBeaconRegion ,因為如果你同時也在執行地理定位區域監視的話,它還可能是一個 CLCircularRegion 。然后你就發送一個本地通知,附帶一個消息“Are you forgetting something?” 。

編譯并運行你的應用;離開某個你的注冊的 iBeacon,然后一旦你離開得足夠遠,你就會看到通知彈出來。

 

參考地址:https://github.com/nixzhu/dev-blog/blob/master/2014-04-23-ios7-ibeacons-tutorial.md


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文日韩在线视频| 九色91av视频| 欧美日产国产成人免费图片| 久久久欧美一区二区| 91九色视频导航| 国产精品aaaa| 91国内揄拍国内精品对白| 亚洲精品久久久久中文字幕欢迎你| 成人网页在线免费观看| 亚洲精品乱码久久久久久金桔影视| 久久久国产精彩视频美女艺术照福利| www欧美xxxx| 91精品国产免费久久久久久| 亚洲天堂视频在线观看| 欧美华人在线视频| 成人午夜两性视频| 亚洲系列中文字幕| 北条麻妃一区二区在线观看| 亚洲国产欧美一区二区三区同亚洲| 91成人天堂久久成人| 久久久久久久久亚洲| 国产精品爽爽爽爽爽爽在线观看| 久久久精品欧美| 国产精品久久久久久久午夜| 久久久国产视频| 欧美日韩在线视频观看| 久久久精品网站| 国外日韩电影在线观看| 欧美日韩一区二区免费在线观看| 日韩中文字幕在线看| 91久久精品国产91久久性色| 亚洲一区二区三区乱码aⅴ蜜桃女| 高清一区二区三区日本久| 亚洲va欧美va国产综合久久| 欧美猛少妇色xxxxx| 2019亚洲日韩新视频| 欧美精品video| 欧美激情中文字幕乱码免费| 色婷婷**av毛片一区| 亚洲男人天堂视频| 国产成人拍精品视频午夜网站| 2020国产精品视频| 欧美成人精品一区二区三区| 国内精品视频在线| 亚洲日韩欧美视频| 亚洲欧美激情精品一区二区| 国产欧美中文字幕| 这里精品视频免费| 精品久久久久久国产91| 亚洲午夜激情免费视频| 精品久久久久久久久国产字幕| 国产精品久久久久av| 超碰精品一区二区三区乱码| 午夜欧美大片免费观看| 日韩精品一区二区三区第95| 国产成人激情视频| 国产精品jvid在线观看蜜臀| 欧美成人自拍视频| 午夜精品一区二区三区av| 国产z一区二区三区| 国产91网红主播在线观看| 欧美理论电影在线播放| 91久久中文字幕| 日本精品久久电影| 国产精品青青在线观看爽香蕉| 亚洲白虎美女被爆操| 亚洲精品黄网在线观看| 日韩有码在线电影| 久久久最新网址| 川上优av一区二区线观看| 国产99视频在线观看| 欧美另类精品xxxx孕妇| 日本一区二三区好的精华液| 狠狠躁18三区二区一区| 亚洲xxxx3d| 久久69精品久久久久久久电影好| 日韩免费在线观看视频| 欧美性一区二区三区| 亚洲欧美在线x视频| 亚洲精品视频网上网址在线观看| 日韩精品视频三区| 91精品综合视频| 亚洲精品一区二区网址| 日韩视频中文字幕| 国产精品99一区| 国内精品400部情侣激情| 久久九九国产精品怡红院| 亚洲福利在线观看| 日本亚洲欧美三级| 欧美精品激情视频| 一区二区在线免费视频| 欧美激情成人在线视频| 91av在线免费观看| 国产国产精品人在线视| 91深夜福利视频| 久热精品视频在线| 亚洲美女av网站| 中文字幕欧美日韩精品| 日韩av一区在线观看| 国语自产在线不卡| 超薄丝袜一区二区| 蜜臀久久99精品久久久久久宅男| 精品国产91久久久久久老师| 日本精品久久久| 91黑丝在线观看| 中文字幕亚洲欧美日韩高清| 国产精品一区二区三区成人| 国产suv精品一区二区| 美日韩在线视频| 国产成人小视频在线观看| 亚洲国产日韩欧美综合久久| 亚洲国产一区二区三区四区| 色噜噜狠狠狠综合曰曰曰| 992tv成人免费影院| 国产精品免费一区二区三区都可以| 亚洲一区免费网站| 国产欧亚日韩视频| 欧美精品免费在线| 亚洲在线免费看| 日本精品久久久| 亚洲美女在线观看| 亚洲精美色品网站| 日韩经典中文字幕在线观看| 久久99久久亚洲国产| 日韩亚洲精品视频| 欧美夫妻性视频| 亚洲香蕉成视频在线观看| 欧美激情2020午夜免费观看| 国产精品免费一区二区三区都可以| 久久久免费精品视频| 国产精品男人爽免费视频1| 亚洲综合精品一区二区| 日韩av电影中文字幕| 欧美另类交人妖| 欧美视频在线观看免费网址| 亚洲第一av网站| 一个人看的www久久| 精品中文字幕视频| 国产午夜精品麻豆| 亚洲欧美国产日韩天堂区| 日韩在线一区二区三区免费视频| 国产精品一区av| 亚洲综合中文字幕68页| 成人综合国产精品| 久久久噜久噜久久综合| 国产91免费看片| 韩剧1988在线观看免费完整版| 日韩电影视频免费| 亚洲一区二区三区视频播放| 国产精品女人久久久久久| 亚洲午夜精品久久久久久性色| 疯狂欧美牲乱大交777| 久久香蕉频线观| 欧美最猛性xxxxx亚洲精品| 国产精品日韩在线观看| 中文字幕久久久av一区| 亚洲另类欧美自拍| 一本一本久久a久久精品综合小说| 在线观看欧美日韩国产| 亚洲国产日韩欧美在线动漫| 久久久久久久久网站| 欧美激情一区二区久久久| 久久精品视频亚洲| 中文字幕在线看视频国产欧美|