[iPhone] System Sound の再生

Photo by Plush Design Studio on Unsplash

iPhone がシステムで持っている音源やバイブレータなどを再生させてみましょう。音楽再生とくれば AVFoundation の AVAudioPlayerですがAudioToolbox のフレームワークにある
AudioServicesPlaySystemSoundを使うと簡単にできます。

Swift 5.1
Xcode 11.3.1

System Sound Services

システムサウンドを使う方法はその種類によっていくつかあります。簡単にIDを指定するだけのものから、好みのワンショット音楽を使うことも可能です。

SystemSoundID

IDを指定するだけでとても簡単です。IDはiPhoneでも多数選択できるように色々あります。

ファイルパスを指定して再生

端末内のシステムサウンドを直接指定して再生します。この場合ボリュームやミュートの影響を受けます。

独自音源ファイル

サンプルとして mp3などをプロジェクトに追加します。30秒以下などの幾つかの制限があります。
例えば、sample.mp3ファイルをプロジェクト内にaddしておきます。

 


バイブレータ

これだけ別処理で直接できます。

サンプルコード

まとめてみると

ViewController.swift

 

Buttonを作成してTouch up insideでそれぞれ紐付けしてテストしてみましょう。

これらのテストの確認は以下の環境設定で実施しましたが、vibraterは当然マナーモードでないと動作しません。またAirPodsはマナーモードでは音楽は聞けますが、これらシステム音は聞こえてきません。

simulator iPhone iPhone(マナーモード) AirPods AirPods
(マナーモード)
SystemSound OK OK – OK –
photoShutter.caf – OK – – –
new-mail.caf – OK – – –
sample mp3 OK OK – – –
vibrater – – OK –  OK

Ref: System Sound Services Reference