ReplayKit возвращает ошибку & quot; RPRecordingErrorFailedToStart & quot;

Я пытаюсь включить функцию записи в мою игру на C ++ с ReplayKit, Я проверяю, что версия iOS 9.0 или выше в моем игровом коде, и если это так, я позвоню RecordReplayIOS::startRecording() и затем ReplayKit должен начать запись.

По какой-то причине startRecordingWithMicrophoneEnabled функция всегда возвращает ошибку -5803что в соответствии с документацией API означает RPRecordingErrorFailedToStart, Есть идеи, что я делаю не так?

RecordReplayIOS.hpp:

#ifndef __RECORD_REPLAY_IOS_HPP__
#define __RECORD_REPLAY_IOS_HPP__

class RecordReplayIOS {
public:
static bool canRecord();
static void startRecording();
static void stopRecording();
};

#endif

RecordReplayIOS.mm:

#include "RecordReplay_ios.hpp"#include "ReplayKit/ReplayKit.h"
@interface Recorder : NSObject
+(void)startRecording;
+(void)stopRecording;
@end

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

bool RecordReplayIOS::canRecord() {
// ReplayKit needs at least iOS 9
if (SYSTEM_VERSION_LESS_THAN(@"9.0")) {
return false;
}
return true;
}

void RecordReplayIOS::startRecording() {
[Recorder startRecording];
}

void RecordReplayIOS::stopRecording() {
[Recorder stopRecording];
}

@implementation Recorder

+(void)startRecording {
RPScreenRecorder* recorder = RPScreenRecorder.sharedRecorder;
recorder.delegate = self;
[recorder startRecordingWithMicrophoneEnabled:false handler:^(NSError * error) {
if(error != nil) {
NSString* desc = error.description;
return;
}
}];
}

+(void)stopRecording {
RPScreenRecorder* recorder = RPScreenRecorder.sharedRecorder;
[recorder stopRecordingWithHandler:^(RPPreviewViewController *previewViewController, NSError *error) {
if(error != nil) {
NSString* desc = error.description;
return;
}
if(previewViewController) {
//do stuff...
}
}];
}

@end

2

Решение

В коде нет ничего плохого. Кажется, я просто пытался использовать ReplayKit с iPad, который был слишком стар. Очевидно, для ReplayKit требуется процессор A7 или A8. Мой iPad 4 с процессором A6 просто не работает с ReplayKit.

Правильный способ проверить, может ли устройство использовать ReplayKit, это запросить RPScreenRecorder.sharedRecorder.available, Возвращает true, если устройство поддерживает ReplayKit.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]