サウンドの鳴らし方には3つあるらしい。ちょっと並べてみる。
今回はこの30秒以内のやつを鳴らしてみる。
では、コードを並べてみよう。ファイルは yukkuri.wavとする。
//SystemSoundID型変数作成 SystemSoundID soundID; // サウンドの準備 NSString *path = [[NSBundle mainBundle] pathForResource:@"yukkuri" ofType:@"wav"]; NSURL *url = [NSURL fileURLWithPath:path]; AudioServicesCreateSystemSoundID((CFURLRef)CFBridgingRetain(url), &soundID); //効果音再生 AudioServicesPlaySystemSound(soundID);
なに、エラーになる?そんな定義はないとな?
むむ、フレームワークを追加してないのではないか?以下はやったか?
左端のプロジェクト名のところをクリックすると、「General Capabilities Info Build Settings」とか上にあるインフォーメーションみたいな画面が開くと思う。ここで「Link Binari With Libralies」のところを見てほしい。おそらく「AudioToolbox.framework」っていうのがそこにないんだと思う。
あとはわかるでしょう。下に追加っぽい「+」ボタンがあるので、これをクリックして追加してくれ。
ん?まだエラーになる?ならば以下ではないか?
#import <AudioToolbox/AudioServices.h>
たぶんこれで動くと思うんだ。
ボタンをふたつ用意して、タグで音を使い分けるようにしてあります。あと、定義方法も少し違うぞ。
// // testappViewController.m // soundcall-1 // #import "testappViewController.h" #import <AudioToolbox/AudioServices.h> @interface testappViewController () - (IBAction)unarapuu:(UIButton *)sender; @end @implementation testappViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. NSLog(@"スタート"); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction)unarapuu:(UIButton *)sender { // AudioServicesPlaySystemSound(1002); //SystemSoundID型変数作成 SystemSoundID soundID; // サウンドの準備 if (sender.tag == 2) { NSURL *soundURL = [[NSBundle mainBundle] URLForResource:@"test2" withExtension:@"wav"]; AudioServicesCreateSystemSoundID((CFURLRef)CFBridgingRetain(soundURL), &soundID); } else { NSString *path = [[NSBundle mainBundle] pathForResource:@"yukkuri" ofType:@"wav"]; NSURL *url = [NSURL fileURLWithPath:path]; AudioServicesCreateSystemSoundID((CFURLRef)CFBridgingRetain(url), &soundID); } //効果音再生 AudioServicesPlaySystemSound(soundID); } @end