首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理UIBackgroundTask过期将停止我的beaconRanging方法

处理UIBackgroundTask过期将停止我的beaconRanging方法
EN

Stack Overflow用户
提问于 2014-06-25 17:13:33
回答 1查看 139关注 0票数 0

我使用ibeacon API开发了一个应用程序,可以在后台使用信标。因为它使用核心位置和蓝牙,所以我从功能中启用了位置和蓝牙配置。因此,在运行我的应用程序后,范围在后台发生,但在我的应用程序终止5-10分钟后,当我启动应用程序时,它再次显示首页和登录页面,所以在google之后,我了解到应用程序在后台运行,但有一些额外的时间。

为了解决应用程序终止问题,我在一个方法中使用了下面的代码,并在applicationDidEnterBackground中调用该方法。

代码语言:javascript
复制
-(void)startBackgroundTask
 {
if(bgTask != UIBackgroundTaskInvalid)
    {
     [[UIApplication sharedApplication] endBackgroundTask:bgTask];
   bgTask = UIBackgroundTaskInvalid;
      }
bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{


   [self endBackgroundUpdateTask];

  NSLog(@"your time is over");
    //you can call start once again to get more time
    }];
  }

 -(void) endBackgroundUpdateTask
{
[[UIApplication sharedApplication] endBackgroundTask: bgTask];
bgTask= UIBackgroundTaskInvalid;
[[NSNotificationCenter defaultCenter]
 postNotificationName:@"TimerOutStartMonitering"   object:nil];

}

在使用上面的代码和调试后,我的应用程序ranging一旦UIBackgroundTaskInvalid停止。如何才能同时完成这两个任务1)后台时间一结束,我的App就不应该终止。2)我对信标的定位不应该停止。

有可能吗?请帮帮我。

EN

回答 1

Stack Overflow用户

发布于 2014-06-25 18:43:19

不幸的是,这是不可能的。您不能无限期地运行这样的后台任务。此机制仅适用于销毁前的短期应用清理。参见here

运行后台任务的

应用程序运行它们的时间是有限的。(您可以使用backgroundTimeRemaining属性找出可用的时间。)

因此,iBeacon测距在后台被限制在几秒内。您可以使用IBeacon监控来重新启动您的应用程序,并在信标发现时再次进行测距,但同样,除非用户将应用程序带到前台,否则您将只能获得很小的测距时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24404621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档