didEnterRegion メソッドをトリガーするビーコンから「メジャー」および「マイナー」IDを取得しようとしています。測距と監視を組み合わせることでこれを行うことができると言われましたが、正しく機能していないようです.
Estimote ビーコンを使用しており、Estimote API を使用しています。ここで何がうまくいかないのですか?ありがとう!
監視と測距を組み合わせることができると書かれている場所へのリンクは次のとおりです。iBeacon: メジャーとマイナーを取得 - 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];
}
範囲ビーコン:
-(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];
}
}