在iOS 8中,当应用程序处于后台状态时,如何连续执行任务

在iOS 8中,当应用程序处于后台状态时,如何连续执行任务,ios,objective-c,ios7,ios8,background-process,Ios,Objective C,Ios7,Ios8,Background Process,我编写了以下代码,用于在应用程序处于后台状态时执行任务。它在iOS 7中工作正常,但在iOS 8中不工作。 有人能给我一个解决方案,当应用程序处于后台状态时,在iOS 8中连续执行任务吗 - (void)applicationDidEnterBackground:(UIApplication *)application { UIApplication *app = [UIApplication sharedApplication]; UIBackgroundTaskIdentifi

我编写了以下代码,用于在应用程序处于后台状态时执行任务。它在iOS 7中工作正常,但在iOS 8中不工作。 有人能给我一个解决方案,当应用程序处于后台状态时,在iOS 8中连续执行任务吗

- (void)applicationDidEnterBackground:(UIApplication *)application 
{
   UIApplication *app = [UIApplication sharedApplication];
   UIBackgroundTaskIdentifier bgTask;
   bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
        [app endBackgroundTask:bgTask];
   }];
}

无法在后台连续执行任务(少数情况除外)

大多数应用程序可以很容易地移动到扩展状态,但也存在一些问题 同时也是应用程序继续在应用程序中运行的正当理由 背景。iOS提供的技术分为三种 类别:

  • 在前台启动短任务的应用程序可能会要求时间来完成 当应用程序移动到后台时,完成该任务
  • 在前台启动下载的应用程序可以将这些下载的管理移交给系统,从而允许应用程序暂停或停止 下载继续时终止
  • 需要在后台运行以支持特定类型任务的应用程序可以声明支持一种或多种后台执行模式
  • 对于需要更多执行时间才能执行的任务,必须 请求特定权限以在后台运行它们,而无需 他们被停职。在iOS中,仅允许使用特定的应用程序类型 在后台运行:

  • 在后台向用户播放音频内容的应用程序, 例如音乐播放器应用程序
  • 在中录制音频内容的应用程序 背景
  • 让用户随时了解其位置的应用程序 时间,例如导航应用程序
  • 支持互联网语音的应用程序 协议(VoIP)
  • 需要下载和处理新内容的应用程序 定期
  • 从外部附件接收定期更新的应用程序
  • 实现这些服务的应用程序必须声明它们提供的服务 支持并使用系统框架来实现 这些服务。声明服务可以让系统知道 您使用的服务,但在某些情况下是系统框架 实际上防止您的应用程序被挂起


    是的,我在实现ibeacon时实现了后台条件。在界面中设置了代理

    @interface HomeMainVC ()<ESTBeaconManagerDelegate>{
    
    您已经使用了下面的代码,但当应用程序被发送到后台模式时,它只被调用一次,所以它对您没有任何用处。如果您想在后台模式下一次只做一次某些事情,那么它对您很有用

    - (void)applicationDidEnterBackground:(UIApplication *)application 
    {
       UIApplication *app = [UIApplication sharedApplication];
       UIBackgroundTaskIdentifier bgTask;
       bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
            [app endBackgroundTask:bgTask];
       }];
    }
    

    尝试使用NSTimer。它将在后台运行10分钟。。!我希望能在我的回答中得到它。在我的情况下,我必须每20秒将我的位置发送到服务器。可能吗?是的,这可以通过NSURLSession“后台上传”实现。您还需要为应用程序启用“后台位置更新”。请参阅本教程(您需要结合NSURLSession和后台位置更新):您能简单地解释一下吗?简单地说一下什么是信标或-(void)applicationIdentinterbackground:(UIApplication*)application{}简要解释一下信标。我已经实现了ibeacon,用于检测在后台和前台模式下进入特定位置的用户。在前台,当应用程序运行时,用户会通过在应用程序中发送带有所需信息的弹出窗口得到通知。当应用程序处于后台状态时,应用程序未运行,用户将收到带有所需信息的本地通知。我想让你了解有关iBeacon的详细信息,然后你可以看看。
    - (void)applicationDidEnterBackground:(UIApplication *)application 
    {
       UIApplication *app = [UIApplication sharedApplication];
       UIBackgroundTaskIdentifier bgTask;
       bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
            [app endBackgroundTask:bgTask];
       }];
    }