AvFoundation
SwiftUIでアラームを鳴らすには、AVFoundationフレームワークを使います。
AVFoundationは、音源、動画、画像などを扱いやすくしてくれるフレームワークです。
アラームの実装
アラームを実装するには、次の手順が必要です。
- 音源をアセットカタログに登録
- コード側で音源データを取得
- AudioPlayerを用意
- アラームを鳴らす関数を実装
- アラームを鳴らすタイミングで関数を呼び出す
1.アセットカタログに音源を登録
アラームに使用する音源を用意し、アセットカタログに登録します。

登録名は好きな名前にしてください。
ここでは、「bell」という名前にしました。

2. コード側で音源データを取得
まず、NSObjectを継承したアラーム用のクラスを作り、その中でコード側で音源データを取得します。
class AlarmSound: NSObject {
//音源データを取得
let alarm = NSDataAsset(name: "bell")!.data
}
アセットカタログのデータは、NSDataAssetを使って取得します。
3.AudioPlayerを用意
AVFoundationをインポートし、AudioPlayerを用意します。
AudioPlayerは、音源を再生するためのものです。
class AlarmSound: NSObject {
//音源データを取得
let alarm = NSDataAsset(name: "bell")!.data
//AudioPlayerを用意
var audioPlayer : AVAudioPlayer!
}
4. アラームを鳴らす関数を実装
func alarmPlay() {
do {
//音源を再生するプレイヤーを格納
self.audioPlayer = try AVAudioPlayer(data: alarm)
//再生
audioPlayer.play()
} catch {
print("再生できませんでした")
}
}
AudioPlayerの変数に、音源データを登録したAudioPlayerのインスタンスを渡します。
この時、エラーが起こるかもしれないので、try文を使っています。
playメソッドで音源を再生します。
5.アラームを鳴らすタイミングで関数を呼び出す
あとは、アラームを鳴らすタイミングで関数を呼び出しましょう。
全体のコード
import SwiftUI
import AVFoundation
class AlarmSound: NSObject {
//音源データを取得
let alarm = NSDataAsset(name: "bell")!.data
//AudioPlayerを用意
var audioPlayer : AVAudioPlayer!
func alarmPlay() {
do {
//音源を再生するプレイヤーを格納
self.audioPlayer = try AVAudioPlayer(data: alarm)
//再生
audioPlayer.play()
} catch {
print("再生できませんでした")
}
}
}
コメント