【Swift】バイブレーションの実装方法!UINotificationFeedbackGenerator
この記事からわかること
- Swiftでバイブレーション機能を実装する方法
- UINotificationFeedbackGeneratorクラスの使い方
- AudioToolboxフレームワーク
- 鳴らせるバイブレーションの違いと種類
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- 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に関しては以下の表を参考にしてください。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。