如何让iOSAPP后台运行

方式一

- (void)applicationDidEnterBackground:(UIApplication *)application {
    _backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{
        [application endBackgroundTask:_backgroundTaskIdentifier];
        self.backgroundTaskIdentifier = UIBackgroundTaskInvalid;
    }];
}

在后台开启一个新的long-run的任务,一般只有10分钟,10分钟以后自动调用Block里面的方法,结束这个后台任务,否则,系统会杀死这个APP,或者手动调用Block里面的内容,结束这个后台任务

方式二

    dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(dispatchQueue, ^(void) {
        NSError *audioSessionError = nil;
        AVAudioSession *audioSession = [AVAudioSession sharedInstance];
        if ([audioSession setCategory:AVAudioSessionCategoryPlayback error:&audioSessionError]){
            NSLog(@"Successfully set the audio session.");
        } else {
            NSLog(@"Could not set the audio session");
        }
        
        NSBundle *mainBundle = [NSBundle mainBundle];
        NSString *filePath = [mainBundle pathForResource:@"wusheng" ofType:@"mp3"];
        NSData *fileData = [NSData dataWithContentsOfFile:filePath];
        NSError *error = nil;
        
        self.audioPlayer = [[AVAudioPlayer alloc] initWithData:fileData error:&error];
        
        if (self.audioPlayer != nil){
            self.audioPlayer.delegate = self;
            
            [self.audioPlayer setNumberOfLoops:-1];
            if ([self.audioPlayer prepareToPlay] && [self.audioPlayer play]){
                NSLog(@"Successfully started playing...");
            } else {
                NSLog(@"Failed to play.");
            }
        } else {
            
        }
    });

步骤

  • 在info.plist中添加Required background modes。并设置为:audio
  • 初始化一个AVAudioPlayer音频,并且无限制的播放下去。

参考[资料]
[资料]: http://blog.sina.com.cn/s/blog_7b9d64af0101cjci.html

你可能感兴趣的:(如何让iOSAPP后台运行)