用户工具

站点工具


分享:技术:ios:让ios程序一直后台运行

让ios程序一直后台运行

选择项目→targets→项目→info中添加

Required background modes Array (1 item)
    Item 0 String App registers for location updates

.h文件

@property (nonatomic, strong) NSTimer *_updateTimer;
@property (nonatomic) UIBackgroundTaskIdentifier backgroundTask;

.m文件

//响应后台
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil];
    
#pragma mark-用定时器控制后台运行
//用定时器控制后台运行
-(void)applicationDidEnterBackground:(NSNotificationCenter *)notication{
    NSLog(@"程序进入后台!");
    UIApplication* app = [UIApplication sharedApplication];
    
    self.backgroundTask = [app beginBackgroundTaskWithExpirationHandler:^{
        NSLog(@"applicationD in Background");
    }];
    
    //加入定时器,用来控制后台运行时间
    self._updateTimer = [NSTimer scheduledTimerWithTimeInterval:60*60*3
                                                         target:self
                                                       selector:@selector(stopUpdate)
                                                       userInfo:nil
                                                        repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:self._updateTimer forMode:NSRunLoopCommonModes];
}

//时间到,停止后台运行定位
-(void)stopUpdate{
    NSLog(@"时间到,停止后台运行定位!");
    [self._updateTimer invalidate];
    self._updateTimer = nil;
    if (self.backgroundTask != UIBackgroundTaskInvalid)
    {
        [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
        self.backgroundTask = UIBackgroundTaskInvalid;
    }
}

参考帖子:http://www.cocoachina.com/bbs/read.php?tid=174389

我自己尝试下来,如果配置App registers for location updates,程序进入后台之后可以获取地理位置信息,但是退出后头上会提示用户[“record”正在使用您的位置信息];如果配置App plays audio or streams audio/video using AirPlay,意思是播放音乐,程序虽然没有挂掉,但是进入后台之后就不能使用位置信息了。

而且还有一个问题,这个软件上传到APP STORE后,不一定会审核通过。

分享/技术/ios/让ios程序一直后台运行.txt · 最后更改: 2016/03/30 10:57 由 gxx