我开发了一个应用程序,它使用 ibeacon API 在后台为信标设置范围。由于它使用核心位置和蓝牙,所以我从功能中启用了位置、蓝牙配置。因此,在运行我的应用程序之后,范围发生在后台,但是在我的应用程序终止之间的 5-10 分钟后,当我启动应用程序时,它再次显示启动画面和登录页面,所以在谷歌之后我了解到应用程序在后台运行一些额外的时间。
为了克服应用程序终止,我在方法中使用以下代码并在 applicationDidEnterBackground 中调用该方法。
-(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];
}
使用上面的代码和调试后,一旦 UIBackgroundTaskInvalid 我的应用程序范围停止。我怎样才能完成这两项任务 1)我的应用程序不应该在后台时间结束后终止。2)我的信标测距不应该停止。
可能吗?请帮帮我。