IOS后台服务(如在Android中)启用所有时间

时间:2014-03-27 14:15:10

标签: ios

它是否像IOS中的Andorid中的服务那样从开始系统开始在后台工作?我玩巫婆信标,我想在用户靠近灯塔时发送通知。 在IOS上有可能吗?

此致

3 个答案:

答案 0 :(得分:1)

只允许某些应用执行此操作。有关背景模式的完整说明,请参阅https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW24

简而言之,可以在后台随时暂停应用,例外情况是请求特定权限的应用在背景中不间断地执行(如voip应用或音乐应用),但如果您请求苹果可能会拒绝您的应用商店提交此类权限和您的应用实际上并未提供任何相关功能。

答案 1 :(得分:1)

您可以在后台执行操作,但它在Android上不起作用。 iOS将调用特定方法为您提供更新的机会,然后您只有有限的时间这样做。

当应用程序返回后台时(大约10分钟左右),您仍然可以抽出更多时间。查看beginBackgroundTaskWithExpirationHandler方法

  

https://developer.apple.com/library/ios/documentation/uikit/reference/UIApplication_Class/Reference/Reference.html

另一种解决方案是使用重要的位置更改。如果用户与您的应用共享其位置,您可以在其位置更改时获得回调,并使用此时间进行刷新。

  

https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html

我知道Dropbox应用程序使用位置解决方案将您的照片从相机胶卷上传到他们的服务。

答案 2 :(得分:1)

是。查看Apple的Documentation for location monitoring

来自文档

  

在iOS中,系统会始终跟踪与您的应用相关联的区域,包括应用未运行的时间。如果在应用未运行时越过区域边界,则会将该应用重新启动到后台以处理该事件。同样,如果应用程序在事件发生时被暂停,它会被唤醒,并且会花费很短的时间(大约10秒)来处理事件。必要时,应用程序可以使用UIApplication类的beginBackgroundTaskWithExpirationHandler:方法请求更多后台执行时间。

您可能需要将“位置更新”添加为应用程序的允许后台模式。我不确定您是否必须启用“使用蓝牙LE配件”或“充当蓝牙LE配件”,或者两者都不支持。

为要监视的UUID创建信标区域。请参阅Apple's docs again

- (void)registerBeaconRegionWithUUID:(NSUUID *)proximityUUID andIdentifier:(NSString*)identifier {
    // Create the beacon region to be monitored.
    CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc]
       initWithProximityUUID:proximityUUID
                  identifier:identifier];
    // Register the beacon region with the location manager.
    [self.locManager startMonitoringForRegion:beaconRegion];
}

处理位置管理员的委派方法:

-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region

您可能希望在处理事件时触发本地通知。 Apple's docs on local notifications