サウンド SE (AudioToolboxでcafファイルを鳴らす)【iOS7対応】
[2013.12.28修正]
iOS7になり変更がありました。Xcode5.0.2でビルド確認済。
1. フレームワーク名前変更
(iOS6) #import<AudioToolbox/AudioServices.h>
→(iOS7) #import<AudioToolbox/AudioToolbox.h>
2. Xcode5からARCがデフォルトになったためポインタのキャストを修正
(iOS6) AudioServicesCreateSystemSoundID((CFURLRef)url,&jump);
→(iOS7) AudioServicesCreateSystemSoundID(CFBridgingRetain(url),&jump);
1.AudioToolbox.frameworkを追加する
2.XXXView.h 変数
#import <AudioToolbox/AudioToolbox.h>
@interface XXXView : UIView {
SystemSoundID jump;
}
3.XXXView.m 読み込み
-(id)initWithCoder:(NSCoder*)coder {
// サウンドファイル読み込み ポインタいちいち個別設定が面倒なので、あえて{}使って同じポインタ名使い回ししてます
{ // jump.caf
NSString *path=[[NSBundle mainBundle] pathForResource:@"jump" ofType:@"caf"];
NSURL *url=[NSURL fileURLWithPath:path];
AudioServicesCreateSystemSoundID(CFBridgingRetain(url),&jump);
}
4.XXXView.m 鳴らしたいところで
AudioServicesPlaySystemSound(jump);
AVFoundationより音の立ち上がりが全然早い。これで連続再生可能。