短いサウンドを鳴らす。

サウンドの鳴らし方には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