我对iO 7.1的新版本感到非常兴奋,iBeacon发生了重大变化,详见http://beekn.net/2014/03/apple-ios-7-1-launches-major-ibeacon-improvement/
在这里:http://beekn.net/2014/03/prisoners-dilemma-ios-7-1-challenges-ibeacon-developers/
根据话题,他们说
在iOS 7.0中,你可以关闭应用程序并停止发送 你的消息。现在,该应用程序甚至不需要打开或在 工作的背景。
据我所知,当应用关闭(不在后台)或发送任何本地通知时,您无法执行任何操作。
那你怎么知道如果iOs 7.1设备进入iBeacon区域呢? 如果您可以在关闭的应用程序进入iBeacon区域时捕获,可以将其唤醒(打开它)吗?
答案 0 :(得分:2)
简而言之。 我已经在一个应用程序中实现了这一点,并且在进入信标范围时调用:
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region;
此时我的应用程序在后台。如果它已被终止重新打开但仍留在后台。我设置为CLLocationManager委托的类接收上述方法的回调,在我的情况下,发布本地通知。 但是,您也可以直接触发打开应用程序。
John Yorke在商店里有一个名为Hide My iPhone的小应用程序。他打开了源代码here,它展示了如何在应用程序中设置和响应信标。
我还使用Apple here的指南了解详情。
答案 1 :(得分:2)
即使您的应用已完全关闭,iOS也会在进入iBeacon区域时启动您的应用。您可以通过执行以下操作来验证它:
init locationManager in - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
添加方法:
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
if ([region isKindOfClass:[CLBeaconRegion class]]) {
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = @"didExitRegion";
notification.soundName = @"Default";
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
}
}
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
if ([region isKindOfClass:[CLBeaconRegion class]]) {
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = @"didEnterRegion";
notification.soundName = @"Default";
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
}
}