音频播放器可以在模拟器中使用,但不能在 iOS 设备上使用
Audio player works in simulator but not on iOS device
我有以下代码初始化:
NSString *path = [NSString stringWithFormat:@"%@/test.mp3", [[NSBundle mainBundle] resourcePath]];
NSURL *soundUrl = [NSURL fileURLWithPath:path];
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil];
然后一个按钮启动播放器
[_audioPlayer play];
所以当我在模拟器上时它工作正常但它在我的设备上不起作用。
获取应用程序包中文件路径的正确方法是这样的:
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
但是如果你真的想要一个NSURL
,使用下面的方法直接得到它:
NSURL *soundUrl = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"mp3"];
此外,模拟器不区分大小写,但真实设备区分大小写。确保您的文件确实命名为 test.mp3
,而不是类似 Test.mp3
的名称。更新代码中的名称以匹配实际文件名。
使用调试器确保 soundURL
不是 nil
。如果不是,但音频播放器仍然无法使用,请使用 error
参数查看原因:
NSError *error = nil;
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:&error];
if (!_audioPlayer) {
NSLog(@"Unable to create audio player: %@", error);
}
我有以下代码初始化:
NSString *path = [NSString stringWithFormat:@"%@/test.mp3", [[NSBundle mainBundle] resourcePath]];
NSURL *soundUrl = [NSURL fileURLWithPath:path];
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:nil];
然后一个按钮启动播放器
[_audioPlayer play];
所以当我在模拟器上时它工作正常但它在我的设备上不起作用。
获取应用程序包中文件路径的正确方法是这样的:
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
但是如果你真的想要一个NSURL
,使用下面的方法直接得到它:
NSURL *soundUrl = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"mp3"];
此外,模拟器不区分大小写,但真实设备区分大小写。确保您的文件确实命名为 test.mp3
,而不是类似 Test.mp3
的名称。更新代码中的名称以匹配实际文件名。
使用调试器确保 soundURL
不是 nil
。如果不是,但音频播放器仍然无法使用,请使用 error
参数查看原因:
NSError *error = nil;
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundUrl error:&error];
if (!_audioPlayer) {
NSLog(@"Unable to create audio player: %@", error);
}