【发布时间】:2013-12-17 13:20:22
【问题描述】:
我正在尝试从触发 didEnterRegion 方法的信标中获取“主要”和“次要”ID。有人告诉我,我可以通过将测距和监控结合在一起来做到这一点,但我似乎无法让它正常工作。
我正在使用 Estimote 信标并且正在使用 Estimote API。任何想法这里出了什么问题?谢谢!
这是一个链接,它说您可以将监控和测距结合起来:iBeacon: get major and minor - only looking for uuid
设置:
#import "ViewController.h"
#import "ESTBeaconManager.h"
@interface ViewController () <ESTBeaconManagerDelegate>
@property (nonatomic, strong) ESTBeaconManager* beaconManager;
@property (nonatomic, strong) UIImageView* bgImageView;
@property (nonatomic, assign) BOOL notificationShown;
@property (nonatomic, strong) UIImageView* productImage;
@end
@implementation ViewController
ViewDidLoad:
- (void)viewDidLoad
{
[super viewDidLoad];
self.beaconManager = [[ESTBeaconManager alloc] init];
self.beaconManager.delegate = self;
self.beaconManager.avoidUnknownStateBeacons = YES;
ESTBeaconRegion* region = [[ESTBeaconRegion alloc]
initRegionWithIdentifier:@"EstimoteSampleRegion"];
[self.beaconManager startMonitoringForRegion:region];
[self.beaconManager requestStateForRegion:region];
[self.beaconManager startRangingBeaconsInRegion:region];
[[NSUserDefaults standardUserDefaults] setObject:@"FALSE"
forKey:@"connectedToBeacon"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
DidRangeBeacons:
-(void)beaconManager:(ESTBeaconManager *)manager
didRangeBeacons:(NSArray *)beacons
inRegion:(ESTBeaconRegion *)region {
NSString *connectedToBeacon = [[NSUserDefaults standardUserDefaults]
stringForKey:@"connectedToBeacon"];
if (connectedToBeacon == FALSE) {
NSNumber *beaconMajor = region.major;
NSNumber *beaconMinor = region.minor;
NSString *alertText = [NSString stringWithFormat:@" Entering (%@,%@)",
beaconMajor, beaconMinor];
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = alertText;
notification.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
[[NSUserDefaults standardUserDefaults] setObject:@"TRUE"
forKey:@"connectedToBeacon"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
【问题讨论】:
-
请注意,当我进入该区域时,本地通知甚至根本没有触发:)
-
我会添加两个 NSLog 语句,一个在 didRangeBeacons 方法的顶部,另一个在 if 语句中。你看到一个或两个日志行吗?
-
为了澄清我在上述问题中的意思,您确定测距是否有效?你的信标工作吗?使用这些日志语句进行测试将帮助您找出答案。
-
得到它的工作大卫,谢谢!
-
很高兴听到!如果您有机会,请在此处记录问题所在,以便对遇到类似问题的其他人有所帮助。
标签: ios iphone objective-c ibeacon