Ios 私人API显示红色脉动双高状态栏(常用于记录)

Ios 私人API显示红色脉动双高状态栏(常用于记录),ios,iphone,iphone-privateapi,Ios,Iphone,Iphone Privateapi,我正在寻找一个关于如何显示录制音频时使用的红色脉动双高状态栏的私有API示例。我想在不开始录制的情况下从我的应用程序启用此状态栏。我只需要状态栏,我希望它是全系统的,所以如果我把我的应用程序放在后台,我希望看到它仍然。要开始录制实际上是一个很好的解决方法,问题是我需要在应用程序在后台运行时(例如,在无声推送之后)从应用程序触发状态栏 我记得在早期的iOS中可以修改全局状态栏,但是我丢失了代码,我希望有人知道这是否可以在iOS 8中完成,并可以分享一些关于我应该使用哪种API的提示。我知道苹果现在

我正在寻找一个关于如何显示录制音频时使用的红色脉动双高状态栏的私有API示例。我想在不开始录制的情况下从我的应用程序启用此状态栏。我只需要状态栏,我希望它是全系统的,所以如果我把我的应用程序放在后台,我希望看到它仍然。要开始录制实际上是一个很好的解决方法,问题是我需要在应用程序在后台运行时(例如,在无声推送之后)从应用程序触发状态栏

我记得在早期的iOS中可以修改全局状态栏,但是我丢失了代码,我希望有人知道这是否可以在iOS 8中完成,并可以分享一些关于我应该使用哪种API的提示。我知道苹果现在已经锁定了很多权利背后的功能,我希望这是他们没有锁定的东西

请注意,这不是应用商店提交,而是一个内部应用程序,我不是在寻找这样做的利弊,而是如何做到这一点的技术信息

编辑:

为了完整起见,我尝试在后台开始录制,但这似乎不起作用。当应用程序位于前台时,代码可以完美地工作,但当应用程序位于后台时,它只会
[self.recorder record]
返回false。能够从后台启动录音机将是完美的,这也将解决我的问题。当我尝试在后台开始录制时,我得到“错误!无法启动录制器”(见下文)


“当它在后台运行”这有什么问题吗?只需从背景开始录制,红色状态栏就会显示出来。有可能,你确定吗?也许我做错了什么。当我尝试从背景开始录制时,我看到红色状态栏闪烁了几分之一秒,然后消失了。你设法从后台开始录音了吗?这对meI来说很有趣,我没有专门测试它,但记得它对我有用。我的应用程序使用黑客技术在后台保持活动状态-
音频
位置
voip
后台模式加上播放静音音频文件。我可以开始录音了。可能它在iOS 8上停止工作了,我只在iOS 7上测试了它。我还在后台播放音频文件以保持运行。我还启用了音频、voip、位置背景模式。如果你能挖掘出这段代码,我将不胜感激:)奇怪。在iOS 8上进行了测试-工作正常,但不适合您的情况。我可以从后台录制音频,但它不显示红色状态栏。它会闪烁一秒钟,即使正在录制,也会消失。生成的文件有效并包含录制的音频。初始化几乎是相同的-设置会话类别,激活会话。对于录制,我使用音频队列API。
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
    if (!granted) {
        NSLog(@"Permission not granted");
    }
}];

NSError *error;

NSArray *pathComponents = [NSArray arrayWithObjects:
                           [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject],
                           @"Audio.m4a",
                           nil];
NSURL *outputFileURL = [NSURL fileURLWithPathComponents:pathComponents];

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryRecord error:&error];

NSDictionary *recordSetting = @{
                                AVFormatIDKey:[NSNumber numberWithInt: kAudioFormatMPEG4AAC],
                                AVSampleRateKey:[NSNumber numberWithFloat:16000.0],
                                AVNumberOfChannelsKey:[NSNumber numberWithInt: 1]
                                };


// Initiate and prepare the recorder
self.recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSetting error:&error];
self.recorder.delegate = self;
BOOL prepared = [self.recorder prepareToRecord];
if (!prepared) {
    NSLog(@"ERROR! Failed to prepare recorder");
}

[[AVAudioSession sharedInstance] setActive:YES error:&error];
BOOL isRecording = [self.recorder record];
if (!isRecording) {
    NSLog(@"ERROR! Failed to start recorder");
}