Воспроизведение местного звука на кнопке watchOS - PullRequest
2 голосов
/ 09 февраля 2020

Я новичок в быстрой разработке и создании простого приложения для яблочных часов. Я бы хотел, чтобы при нажатии кнопки прозвучал короткий звук. Это возможно?

Из того, что я понимаю, лучший способ сделать это с AVFoundation и AVAudioPlayer. Похоже, в последние несколько выпусков было много обновлений, и я нахожу противоречивые советы. Основываясь на нескольких уроках, я собрал этот простой тест, но я получаю "Поток 1: Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения" Вот мой код:

import WatchKit
import Foundation
import AVFoundation

var dogSound = AVAudioPlayer()


class InterfaceController: WKInterfaceController {

    override func awake(withContext context: Any?) {
        super.awake(withContext: context)

        // Configure interface objects here.
    }

    override func willActivate() {
        // This method is called when watch view controller is about to be visible to user
        super.willActivate()
    }

    override func didDeactivate() {
        // This method is called when watch view controller is no longer visible
        super.didDeactivate()
    }

    @IBAction func playTapped() {

        let path = Bundle.main.path(forResource: "Dog", ofType: ".mp3")!
        let url = URL(fileURLWithPath: path)

        do {
            dogSound = try AVAudioPlayer(contentsOf: url)
            dogSound.play()
        } catch {
            //couldn't load file :(
        }

    }
}

Мой аудиофайл - mp3 с именем Dog в папке Assets.xcassets в Расширение WatchKit , и у меня есть добавлено AVFoundation.framework к Link Binary with Libraries

Что я делаю не так, и есть ли руководство для правильного способа реализации этого? Большое спасибо!

...