2015-10-29 5 views
0

Я создаю приложение часов, которое записывает аудио и воспроизводит этот звук. Записанный звук сохраняется в группах приложений, и я использовал следующий код для воспроизведения звука.presentMediaPlayerControllerWithURL увольнение сразу без воспроизведения звука

- (void)playAudio 
{ 
    // Playing the audio from the url using the default controller 
    [self presentMediaPlayerControllerWithURL:self.audioFileURL options:@{WKMediaPlayerControllerOptionsAutoplayKey : @YES} completion:^(BOOL didPlayToEnd, NSTimeInterval endTime, NSError * _Nullable error) { 
     NSLog(@"Error = %@",error); 
    }]; 
} 

К сожалению, я получаю следующее сообщение об ошибке, и игрок-контроллер немедленно уволен.

об ошибках Домен = com.apple.watchkit.errors код = 4 "Операция не может быть завершена" UserInfo = {NSLocalizedFailureReason = Произошла неизвестная ошибка (1), NSUnderlyingError = 0x16daa810 {Ошибка домена = NSPOSIXErrorDomain код = 1 «Операция не разрешена»}, NSLocalizedDescription = Операция не может быть завершена}.

Затем я загрузил образец проекта (WatchKitAudioRecorder Sample code) из библиотеки разработчиков Apple WatchOS, но они также имеют одинаковую проблему. Я не знаю, почему это не работает даже в Apple. Пример кода :(

ответ

0

Наконец-то я обнаружил, что данные не записываются в URL-адрес. Также должно быть написано по следующему пути: Library/Caches/filename. расширение Вот пример кода, который может помочь кому-то

- (void)writeAudioToAppGroupsWithData:(NSData *)audioData 
{ 
    // Writing the audio data to the App Groups 
    NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:APP_GROUP_IDENTIFIER]; 
    containerURL = [containerURL URLByAppendingPathComponent:[NSString stringWithFormat:DIRECTORY_PATH]]; 
    [audioData writeToURL:containerURL atomically:YES]; 
} 

В этом случае убедитесь, что ваш DIRECTORY_PATH является Библиотека/кэши/filename.extension Например:.. Библиотека/кэши/Audio.mp3