iOS - 使用iBeacons在Proximity上触发事件

时间:2014-03-13 15:09:30

标签: ios iphone objective-c ios7 ibeacon

我正在使用新的iOS7 API开发iOS应用程序:iBeacon。

当我检测到一个给定的接近度时,我只是试图触发一个事件,立即在这里(4个中,其他是近,远和未知)。

当我在iPhone 4S上构建我的应用程序时,它可以工作。所以我可以说我已经完成了,但由于我对iOS很新,我根本不确定我的实现是否仍然正确,或者更糟糕的是,如果不是这样的话,安全

我基本上在我的视图控制器(objective-c类)中实现了我的事件,并在 locationManager 方法中调用它,其中信标得到了范围。我拿了示例应用AirLocate中给出的代码,如果你想看看它是怎么回事。

我的活动只是调用另一个视图(只有当您与我的Beacon紧邻时才能访问该特定视图的某些新功能)。我认为这是 smart ,因为每次我的信标获得范围,if条件也会运行,如果它是真的,我的事件就会被调用。

以下是 locationManager 方法末尾的if条件:

    //Beacons ranging method from Apple until here.
    //My code following the sample code.

    CLBeacon *beacon = [[CLBeacon alloc] init];
    beacon = [beacons lastObject];
    if (beacon.proximity == CLProximityImmediate) {
        [self immediateDetection];
    }
    //End of the method here, which would be closed by the last "}"

这是我的小方法/事件:

    - (void)immediateDetection
    {
        NSString *storyboardName = @"Main";
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
        UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"HueSwitch"];

        //call another view
        [self presentViewController:viewController animated:YES completion:nil];
    }

正如我所说,它在我的iPhone上工作正常,但我无法知道它是否是不合适的。

所以,我只是愚蠢而且似乎一切正常,或者我的代码是否存在严重的安全性或稳定性问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

稍微重写一下你的代码

CLBeacon *beacon = [beacons lastObject];
if (beacon && beacon.proximity == CLProximityImmediate) {
   [self immediateDetection];
}

在第二部分中,如果已经显示

,则将检查添加到不存在的视图中
 - (void)immediateDetection
{
    if (self.presentedViewController)
    {
      return;
    }
    // rest of code here