presentMediaPlayerControllerWithURL 立即关闭而不播放音频
presentMediaPlayerControllerWithURL dismissing immediately without playing the audio
我正在创建一个可以录制音频并播放该音频的手表应用程序。录制的音频保存在应用程序组中,我使用以下代码播放音频。
- (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);
}];
}
不幸的是,我收到以下错误,播放器控制器立即被关闭。
Error Domain=com.apple.watchkit.errors Code=4 "The operation could not be completed" UserInfo={NSLocalizedFailureReason=An unknown error occurred (1), NSUnderlyingError=0x16daa810 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}, NSLocalizedDescription=The operation could not be completed}.
然后我从 Apple WatchOS Developer library 下载了一个示例项目 (WatchKitAudioRecorder Sample code),但他们也有同样的问题。我不知道为什么即使在 Apple 示例代码中这也不起作用:(
终于发现数据没有写入url路径。也应该写在下面的路径中:Library/Caches/filename.extension
这是一个示例代码,可能会对某人有所帮助。
- (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 是 Library/Caches/filename.extension。例如:Library/Caches/Audio.mp3
我正在创建一个可以录制音频并播放该音频的手表应用程序。录制的音频保存在应用程序组中,我使用以下代码播放音频。
- (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);
}];
}
不幸的是,我收到以下错误,播放器控制器立即被关闭。
Error Domain=com.apple.watchkit.errors Code=4 "The operation could not be completed" UserInfo={NSLocalizedFailureReason=An unknown error occurred (1), NSUnderlyingError=0x16daa810 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}, NSLocalizedDescription=The operation could not be completed}.
然后我从 Apple WatchOS Developer library 下载了一个示例项目 (WatchKitAudioRecorder Sample code),但他们也有同样的问题。我不知道为什么即使在 Apple 示例代码中这也不起作用:(
终于发现数据没有写入url路径。也应该写在下面的路径中:Library/Caches/filename.extension 这是一个示例代码,可能会对某人有所帮助。
- (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 是 Library/Caches/filename.extension。例如:Library/Caches/Audio.mp3