Tag: geofencing

地理栅栏:如何使用Swift在现实世界中实现虚拟边界?

什么是地理围栏? 地理围栏是一种定义现实世界地理区域周围的虚拟边界的技术。 每次用户进入或退出某个地理围栏的边界时,都可以在支持位置的设备(通常是智能手机)中触发动作。 通常,用户将根据其位置实时接收包含某些信息的通知。 这项技术的主要优势在于,它将虚拟世界与真实世界融合在一起。 在横向视图中,我们在多个项目中利用了地理围栏,特别是在卫生行业。 地理围栏在移动开发中的应用 地理围栏可以有多种应用程序: 市场营销 :服装店附近时,服装店可以通过当天的优惠和折扣触发推送通知。 提醒 :此应用程序可以提醒足球俱乐部的球迷在周围时进入体育场的大门的地址。 到达和离开特定位置:航空公司可以发送通知,希望用户在飞机起飞后安全旅行,或者在飞机降落时发送欢迎消息。 儿童追踪 :应用程式可以传送通知,告知父母其子女已离开或进入特定区域。 安全性:进入或离开区域时,该应用可以启用或禁用功能。 但是,地理围栏并不是要随身携带推送通知轰炸用户。 重要的是要向用户提供相关信息,以便在正确的时刻考虑到用户的需求,从而做出更好的决策。地理围栏的目的是增加价值并为客户提供更好的体验。 相应地使用它,将为客户和企业创造双赢局面。 因此,了解这种技术的强大功能的重要性。 优点 通过提供实时报价,折扣和促销来吸引客户。 增强用户体验。 向用户发送位置特定的通知。 缺点 地理围栏需要用户的批准。 如果用户拒绝或禁用位置服务,则必须在应用设置中启用地理围栏,然后才能使用。 位置跟踪会消耗过多的电池电量,这是用户关闭设备中的位置服务的首要原因。 仅适用于大范围区域。 知名应用中的地理围栏 您是否曾经问过自己,当您在已经访问过并签到过的地方附近时,Foursquare会如何向您发送提醒? 或《 Pokemon-Go》如何在关键区域禁用狩猎小精灵? 答案是地理围栏:在现实世界中创建边界,同时通过移动设备跟踪您的位置。

地理围栏应用程序中的半径选择-iOS

几天前,我的工作是模仿iPhone提醒应用程序的基于位置的提醒功能。 其中最复杂的部分是在苹果地图上实现半径选择。 我在互联网上四处寻找帮助,但没有找到具体的帖子。 因此,由于基于地理围栏的应用程序的兴起,我想写一篇文章。 在这里,我将解释实现相同步骤的步骤。 我们将编写几行代码。 步骤1:将View和MapView添加到情节提要 将UIView视图添加到情节提要,并添加顶部,底部,前导和尾随约束。 将所有4个约束都设置为0。在UIView中添加MapKit视图,并将所有4个侧面的约束都约束为0。 步骤2:为Pin和Radius创建图像(根据您的要求) 在这一步中,我为您提供了一些技巧来创建地图图钉和半径图像,这将非常有帮助。 地图图钉:我们将使用地图图钉来显示地图的当前位置,并且当我们移动地图时,将使用图钉来选择位置。 在这里,我谈论的是Uber应用程序正在使用的功能。 因此,创建一个销钉图像,该图像是销钉高度的两倍。 因此,如果您的图钉高度为10像素,则图像高度应为20像素。 之所以这样做,是因为我们要在地图中间显示点。 半径圆:仅使用边框创建100 x 100的半径圆图像。 我们将使用此图像在地图上选择半径。 步骤3:添加地图图钉和半径圆 在我们的UIView内的情节提要中将地图图钉和半径圆添加为UIImage。 将其约束到屏幕中心。 到目前为止,我们的情节提要文件应如下所示。 步骤4:添加UIView用作触摸区域。 在这里,我们需要另一个UIView。 请检查以下图像以查看我为该视图设置的属性和约束。

在Geo-Fencing中多次调用区域监控方法

我创build了多个地理围栏来监视区域进入/退出事件。 我在AppDelegate.h文件中创build了一个位置pipe理器 。 @interface AppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate> @property (strong, nonatomic) UIWindow *window; @property(nonatomic,retain)CLLocationManager *locationManager; @property(nonatomic,retain)CLLocation *currentLocation; +(AppDelegate *)sharedDelegate; AppDelegate.m文件 – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; if (notification) { NSLog(@"AppDelegate didFinishLaunchingWithOptions"); application.applicationIconBadgeNumber = 0; } if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge|UIUserNotificationTypeAlert|UIUserNotificationTypeSound) categories:nil]; [application registerUserNotificationSettings:settings]; } else […]

iOS – iBeacon – 在iOS 7.1更新后,在后台广告(广播)作为信标

我试图做一个应用程序使用iBeacon其中一个设备将作为信号灯广播和另一个作为Receiver.I 运行iPhone中作为iBeacon在背景中类似的东西,但目前的解决scheme,不存在的API iBeacon,所以我再次问这个问题。 即使应用程序处于“后台”或“退出”模式,我也能成功通知“检测器设备”(接收器)。 但每当广播器设备的应用程序进入后台它停止广播数据包,并成为不再作为信标。 当它在前台出现时,它再次正常工作。 所以问题是广播公司必须始终处于前台担任广告商或广播公司。 即使应用程序处于后台模式,是否还有广告/广播iBeacon的数据包? 我从xCode启用了“位置更新”和“充当蓝牙LE配件”function。

CLLocationManager startMonitoringForRegion:设备重启后不重新启动应用程序

好的,所以我现在有一个应用程序,我使用CLLocationManager startMonitoringForRegion方法注册一个地理栅栏来监视。 这个应用程序在前台和后台时正常工作。 我也有适当的plist值设置: UIBackgroundModes :{location} UIRequiredDeviceCapabilities: {location-services} 什么都行不通 设备重新启动后,应用程序不会重新启动。 如果在进入后台之前设置了startMonitoringSignificantLocationChanges ,我可以强制执行此操作。 但这种方法使用更多的电池寿命,我不需要所有的时间,只要我打破地理围栏。 地区的文档说: In iOS, the regions you register with the location manager persist between launches of your application. If a region crossing occurs while your iOS app is not running, the system automatically wakes it up (or relaunches it) in the background so […]

即使应用程序没有运行,如何使用Geofence?

我正在创build一个位置感知应用程序。 我已经能够创buildgeofences,当我在我的iPhone中testing它时,我注意到当应用程序在前台和后台运行时调用calllback方法-didEnterRegion和-didExitRegion 。 但是,当我杀了应用程序(意思是应用程序状态是“没有运行”)的方法callback没有被调用。 那么,我在这里错过了什么? 有什么configuration,我需要做的? 任何思想家伙? 谢谢!

地理围栏iOS8:iOS需要背景模式Geofencing

我在我的应用程序中使用了geofencing。 Geofencefunction描述: 应用程序在进入或退出区域时具有两种types的function: 重置围栏:如果用户将进入该区域,该区域具有重置围栏的function,则应用程序将调用一个networking服务并获得新的围栏列表。 这个function也应该在后台模式下工作。 应用程序打开:如果用户将进入该地区,该地区具有app_open的function,那么应用程序将 *a. Show alert, if the app is in foreground mode* *b. Show notification, if the app is in background mode* 我已经使用区域监控来实现此function,也不希望使用重大的位置更改,因为应用程序设置了围绕100到200米半径的围栏。 现在我的问题是, 我应该使用后台模式“应用程序寄存器的位置更新”监测区域的交叉 我用下面的代码在背景模式下调用“重置围栏”的web服务。 – (void)beginBackgroundUpdateTask {self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^ {[self endBackgroundUpdateTask]; }]; } – (void)endBackgroundUpdateTask {[[UIApplication sharedApplication] endBackgroundTask:self.backgroundUpdateTask]; self.backgroundUpdateTask = UIBackgroundTaskInvalid; } 所以,我应该应用任何设置在info.plist由于[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandle。 请进一步指导我。 我通过互联网search了很多,但是还没有find我上面两个问题的具体答案。 […]

Swift:用户位置附近的Geofencing / geolocations

问题: 我试图让它始终使用用户的位置,并不断检查它是否在我设置的CLLocationCoordinate2D点的5英里内。 如果是这样,则在应用程序打开时发送警报,或者在应用程序closures时发送通知。 有用的信息: 在我的项目中,我有4个快速文件: Locations.swift包含CLLocationCoordinate2D点。 Utilities.swift包含一个简单的警报。 UserLocation.swift检索并更新用户的位置 GeoLocationViewController.swift监视位置 注意: 一些代码可能不在正确的位置或相关,我在看另一个项目,试图从它提取相关的代码来使用我的项目。 请告诉我,如果你发现一个错误。 码: Locations.swift: import UIKit import MapKit class Locations: UIViewController { override func viewDidLoad() { super.viewDidLoad() var radius: CLLocationDistance = 5 let arroyo = CLLocationCoordinate2D (latitude: 33.781327997137595, longitude: -116.46394436519012) var arroyoCoord: CLLocationCoordinate2D = arroyo let buddyrogers = CLLocationCoordinate2D (latitude: 33.78051204742721, longitude: -116.46362250010833) var buddyCoord: […]

iOS Geofence,监控开始时如何处理内部区域?

我一直无法解决如何处理手机已经在区域内的情况下startMonitoringForRegion被称为? 其他问题已经build议在didStartMonitoringForRegion调用requestStateForRegion然后调用方法didDetermineState: forRegion: 所以代码看起来像这样: – (void)viewDidLoad { //location manager set up etc… for (Object *object in allObjects){ CLRegion *region = [self geofenceRegion:object]; [locationManager startMonitoringForRegion:region]; } } – (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region { [self.locationManager requestStateForRegion:region]; [self.locationManager performSelector:@selector(requestStateForRegion:) withObject:region afterDelay:5]; } – (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region { if (state == CLRegionStateInside){ [self locationManager:locationManager didEnterRegion:region]; } } […]

iOS – closuresWiFi的地理围栏

我有代码,在我的iPhone上创build一个地理围栏,将触发didExitRegion被调用时执行一些代码。 但是,我发现,当我closuresWiFi时,didExitRegion永远不会被触发。 在iOS上监控区域更改是否需要WiFi? 我期望的精确度设置为kCLLocationAccuracyHundredMeters。 我正在testingiOS 6.1和iPhone 4。 这里是我设置位置监控的代码: – (id)init { self = [super init]; if (self) { CLLocationManager *manager = [[CLLocationManager alloc] init]; manager.delegate = self; manager.desiredAccuracy = kCLLocationAccuracyHundredMeters; manager.distanceFilter = RADIUS/10.0; manager.headingFilter = kCLHeadingFilterNone; self.locationManager = manager; self.authorizationStatus = [CLLocationManager authorizationStatus]; } return self; } 谢谢