Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 为什么我的.aif短声音文件只能在iOS模拟器上播放,而不能在设备上播放?_Iphone_Ios_Objective C_Audio - Fatal编程技术网

Iphone 为什么我的.aif短声音文件只能在iOS模拟器上播放,而不能在设备上播放?

Iphone 为什么我的.aif短声音文件只能在iOS模拟器上播放,而不能在设备上播放?,iphone,ios,objective-c,audio,Iphone,Ios,Objective C,Audio,我希望在我的iPhone(iOS 6.1)上根据按下的按钮播放声音 在转换成aif、caf、wav和压缩格式后,我无法在设备上获得声音。已检查音量,设备已重新启动,文件名中未包含大写字母 我读了很多关于这个问题的话题,但没有找到一个合适的解决方案,这意味着我的问题要么更复杂,要么更愚蠢——当然是愚蠢 下面是我播放声音的代码: // Plays sound of given filename - (void) playSound:(NSString*)name { SystemSoundI

我希望在我的iPhone(iOS 6.1)上根据按下的按钮播放声音

在转换成aif、caf、wav和压缩格式后,我无法在设备上获得声音。已检查音量,设备已重新启动,文件名中未包含大写字母

我读了很多关于这个问题的话题,但没有找到一个合适的解决方案,这意味着我的问题要么更复杂,要么更愚蠢——当然是愚蠢

下面是我播放声音的代码:

// Plays sound of given filename
- (void) playSound:(NSString*)name {
    SystemSoundID sound = [self createSoundID:name];
    AudioServicesPlaySystemSound(sound);
    NSLog(@"file played: %@",name);
}

// Creates a playable sound out of filename
-(SystemSoundID) createSoundID:(NSString*) name
{
    NSString *path = [NSString stringWithFormat: @"%@/%@",
                      [[NSBundle mainBundle] resourcePath], name];


    NSURL* filePath = [NSURL fileURLWithPath: path isDirectory: NO];
    SystemSoundID soundID;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID);
    return soundID;
}

如果声音在模拟器上工作正常,但在真实设备上工作不正常,则意味着您应该打开设备的振铃器和警报设置。您还应该检查“静音”按钮是否处于“开”状态。

问题在于调用playSound的方法没有使用NSTimer调用。似乎要播放声音,它们必须由应用程序的主线程调用(这似乎是合法的…)


所以我修改了应用程序,让主线程调用这些声音,瞧,它在设备上也能工作。上面的代码是正确的。

谢谢您的回答。这已经检查过了,iPhone上的所有其他声音都打开了。