読者です 読者をやめる 読者になる 読者になる

A Day In The Life

とあるプログラマの備忘録

iOS 組み込みの効果音を鳴らしてみる

ios objective-c/objc

iOSにはいくつか組み込みの効果音が用意されていて AudioToolbox フレームワークを使うと簡単に鳴らすことが出来ます。

手順

  1. プロジェクトに AudioToolbox.framework を追加します。

    Xcodeでフレームワークを追加
  2. AudioServices.h をインポートします。
  3. AudioServicesPlaySystemSound 関数を実行します。引数にはサウンド ID を渡します。

    #import "RootViewController.h"
    #import <AudioToolbox/AudioServices.h>
    
    @implementation RootViewController
    - (IBAction)onClick:(id)sender {
        AudioServicesPlaySystemSound(1000);
    }
    @end
    


音の種類

サウンド ID は1000から1017まで全部で18種類あります(同じ音でも振動が違ったりしてます)。おなじみのメール送信や着信の音からこんな音どこで使うんだという音まで結構いろいろ入ってます。

サウンド ID 振動
1000 Eメール着信 1回
1001 Eメール送信 なし
1002 SMSやノーティフィケーションの着信 1回
1003 SMS着信(SMSアプリ内) 2回
1004 SMS送信 なし
1005 ピポピポ 1回
1006 缶を叩いたような音 なし
1007 1002と同じ 2回
1008 チリーン 2回
1009 トライアングルのような音 2回
1010 パフパフ 2回
1011 なし 2回
1012 1007と同じ 2回
1013 カーン 2回
1014 ピポポポポ 2回
1015 1002と同じ 1回
1016 フィフー なし
1017 1005と同じ 1回(長い)

番外編

音なしでバイブだけ鳴らしたいのであれば AudioServicesPlayAlertSound 関数を使う方法があります。

#import "RootViewController.h"
#import <AudioToolbox/AudioServices.h>

@implementation RootViewController
- (IBAction)onClick:(id)sender {
    AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
}
@end

上の表のサウンド ID 1011 との違いは 1011 は短いバイブが2回なのに対し kSystemSoundID_Vibrate は長いバイブが1回です。