美文网首页
申请短时间后台运行时间

申请短时间后台运行时间

作者: woniu | 来源:发表于2018-02-05 18:16 被阅读39次

    在项目中需要SDK在进入后台之后发送采集的数据,可是发现有时数据并不能发送成功。当然,这不是我数据的问题,APP在按Home键进入后台之后在几秒钟之后会退出程序,从而导致网络没有足够的时间发送成功数据。所以为了解决这个来不及发送数据的问题,我们就必须要申请短时间的后台运行时间。说明下,在iOS 7之前我们可以申请600s,但是之后就只能申请到180s的后台运行时间。当然,如果APP是音乐或网络电话类型的,可以申请长时间的后台运行,这个不在我们的讨论之列。下面我们来详细分析一下吧:

    1、backTaskIdentifier必须是同一个,所以首先创建全局的对象:

    @property (nonatomic,assign) UIBackgroundTaskIdentifier background_task;
    

    2、我们在进入后台的时候调用申请运行时间的方法,开始和结束必须成对调用,180s过后会执行block里面的事件,然后我们终结掉事件:

    - (void)EnterBackgroundNotification{
        //  声请进入后台的时间,在180s之后执行Block里面的方法。(亲测180s)
         self.background_task = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
             if (self.background_task != UIBackgroundTaskInvalid) {
                 [[UIApplication sharedApplication] endBackgroundTask: self.background_task];
                 self.background_task = UIBackgroundTaskInvalid;
             }
        }];
    }
    

    3、如果SDK在180s内又从后台进入前台,我们在进入前台的方法中终结申请时间事件:

    //这个地方我觉得系统应该就已经终结了,因为现在已经是在前台了啊,所以感觉不必在这里调用这个方法,有些多余。
    - (void)ForegroundNotification{
        [[UIApplication sharedApplication] endBackgroundTask: self.background_task];
        self.background_task = UIBackgroundTaskInvalid;
        }
    

    相关文章

      网友评论

          本文标题:申请短时间后台运行时间

          本文链接:https://www.haomeiwen.com/subject/dieizxtx.html