【Swift】バイブレーションの実装方法!UINotificationFeedbackGenerator
この記事からわかること
- Swiftでバイブレーション機能を実装する方法
- UINotificationFeedbackGeneratorクラスの使い方
- AudioToolboxフレームワーク
- 鳴らせるバイブレーションの違いと種類
index
[open]
\ アプリをリリースしました /
環境
- Xcode:14.3.1
- iOS:16.4
バイブレーションを鳴らす方法
Swiftでバイブレーションを実装するにはUINotificationFeedbackGenerator/UIImpactFeedbackGenerator/UISelectionFeedbackGeneratorクラスかAudioToolboxフレームワークを使用します。
各クラスの役割の違い
- UINotificationFeedbackGenerator:成功や失敗、警告を伝える
- UIImpactFeedbackGenerator:ボタンのタップなど物理的な動作を伝える
- UISelectionFeedbackGenerator:選択が変更されたことを伝える
UINotificationFeedbackGeneratorクラス
公式リファレンス:UINotificationFeedbackGeneratorクラス
UINotificationFeedbackGeneratorクラスはユーザーに対して成功や失敗、警告などを触覚的に伝えるためのジェネレータークラスです。バイブレーションを実装するにはこのクラスのnotificationOccurredメソッドなどを使用します。
notificationOccurredメソッドを使用する場合は引数に列挙型FeedbackTypeの値を渡します。
FeedbackType.success(成功)
UINotificationFeedbackGenerator().notificationOccurred(.success)
FeedbackType.error(失敗)
UINotificationFeedbackGenerator().notificationOccurred(.error)
FeedbackType.warning(警告)
UINotificationFeedbackGenerator().notificationOccurred(.warning)
UIImpactFeedbackGeneratorクラス
公式リファレンス:UIImpactFeedbackGeneratorクラス
UIImpactFeedbackGeneratorクラスは物理的な衝撃を触覚的にユーザーに伝えるためのジェネレータークラスです。インスタンス化する際に列挙型FeedbackStyleの値を渡してバイブレーションの種類を選択し、impactOccurredメソッドで実行しています。
軽めの振動
UIImpactFeedbackGenerator(style: .light).impactOccurred()
普通の振動
UIImpactFeedbackGenerator(style: .medium).impactOccurred()
重めの振動
UIImpactFeedbackGenerator(style: .heavy).impactOccurred()
UISelectionFeedbackGenerator
公式リファレンス:UISelectionFeedbackGeneratorクラス
UISelectionFeedbackGeneratorクラスは選択が変更されたことを触覚的に伝えるためのジェネレータークラスです。selectionChangedメソッドを実行することで振動が実行されます。
UISelectionFeedbackGenerator().selectionChanged()
AudioToolbox
Audio Toolboxフレークワークはオーディオの録音または再生、フォーマットの変換、オーディオストリームの解析、およびオーディオセッションの構成を行うためのAPIを提供するフレームワークです。
おすすめ記事:【Swift】システムサウンドの再生方法!AudioServicesPlaySystemSoundの使い方
AudioToolboxフレームワークはこれまでのクラスと違いimportを記述しないと使用することはできません。
import AudioToolbox
バイブレーションを鳴らす
AudioServicesPlaySystemSound(SystemSoundID(kSystemSoundID_Vibrate))
またシステムサウンドIDを渡すことで任意の目的にあったバイブレーションを鳴らすことも可能です。
AudioServicesPlayAlertSoundWithCompletion(SystemSoundID(1311))
システムサウンドIDに関しては以下の表を参考にしてください。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。







