[Video Summary] Ch. 1.13 Playing Sound in SwiftUI with AVAudioPlayer (2025)

SwiftUI 6 Th02 2025

Mô tả nhanh

Video này trình bày cách thêm âm thanh vào ứng dụng iOS/macOS sử dụng SwiftUI với AVAudioPlayer. Video cũng đề cập đến việc import các module, làm việc với file âm thanh, xử lý lỗi cơ bản với guard let và do-try-catch, cũng như các best practice trong lập trình Swift.

Video

Click vào hình dưới để mở:
Ch. 1.13 Playing Sound in SwiftUI with AVAudioPlayer (2025)

Mô tả chi tiết

Video này hướng dẫn cách thêm âm thanh vào ứng dụng iOS/macOS bằng SwiftUI và AVAudioPlayer.
Ch. 1.13 Playing Sound in SwiftUI with AVAudioPlayer (2025)

Các bước thực hiện chính:

  1. Chuẩn bị:

    • Tải xuống các file âm thanh cần thiết từ link được cung cấp (bit.ly/pro-g-swiftui-files).
    • File âm thanh có định dạng .mp3, .wav.
    • Đảm bảo tên các file âm thanh là sound0.mp3, sound1.mp3, sound2.mp3,...
    • Có thể thu âm bằng QuickTime Player
  2. Thêm file âm thanh vào Assets Catalog:

    • Trong Xcode, chọn Assets.xcassets.
    • Tạo một folder mới tên là sounds và kéo các file âm thanh tải về vào folder này.
  3. Import Module:

    • Thêm import AVFAudio vào đầu file code để có thể sử dụng các class liên quan đến audio (AVAudioPlayer).
  4. Khai báo Audio Player:

    • Tạo một biến state để lưu trữ audio player: @State private var audioPlayer: AVAudioPlayer!
    • Sử dụng dấu ! để "implicitly unwrapping an optional" - nói rằng biến này sẽ được khởi tạo trước khi sử dụng.
  5. Đọc File Âm Thanh:

    • Trong closure của button action, sử dụng guard let để đảm bảo file âm thanh có thể đọc được từ asset catalog.
      • Tạo một constant soundName để lưu trữ tên file âm thanh.
      • Sử dụng NSDataAsset(name: soundName) để lấy data từ file trong asset catalog.
      • Nếu không thể đọc file, in ra lỗi và return để kết thúc closure.
  6. Khởi Tạo và Phát Âm Thanh:

    • Sử dụng do-try-catch để xử lý lỗi khi tạo AVAudioPlayer.
    • Trong block do, khởi tạo audioPlayer bằng AVAudioPlayer(data: soundFile.data).
    • Nếu thành công, gọi audioPlayer.play() để phát âm thanh.
    • Trong block catch, in ra lỗi nếu quá trình khởi tạo AVAudioPlayer thất bại.
  7. Tạo Âm Thanh Ngẫu Nhiên:

    • Tạo một biến state lastSoundNumber kiểu Int để theo dõi âm thanh vừa phát, khởi tạo với giá trị -1.
    • Tạo một constant numberOfSounds kiểu Int để lưu số lượng âm thanh (ví dụ: 6).
    • Trong closure của button action, tạo một repeat-while loop để tạo một số ngẫu nhiên, không giống với số đã phát trước đó.
    • Tạo biến soundName để gán tên file âm thanh có dạng "sound" + số ngẫu nhiên.
    • Thay thế giá trị sound0 ban đầu bằng biến soundName vừa khởi tạo
  8. Best Practice:

    • Sử dụng constant cho các giá trị lặp lại, tránh "magic number/string".
    • Thêm emoji vào message in lỗi để dễ phân biệt trong console.

Chúc bạn thành công với việc phát âm thanh trong ứng dụng của mình!

Tags