Swift MPRemoteCommandCenter nextTrackCommand dipanggil 3 kali

Saya menggunakan MPRemoteCommandCenter untuk mengubah lagu di aplikasi radio musik saya. Tapi ketika saya menekan tombol trek berikutnya dari layar kunci, ia melompat 3 langkah, bukan satu langkah.

Ini kode saya:

func setupRemoteTransportControls() {
        let commandCenter = MPRemoteCommandCenter.shared()

        commandCenter.nextTrackCommand.addTarget { [unowned self]     event in
        print("Next")
        self.stationIndex = (self.stationIndex+1)
        self.currentStation = self.stations[self.stationIndex]
            return .success
        }
}

Outputnya adalah: Berikutnya Berikutnya Berikutnya

Tapi saya hanya menekan tombolnya sekali. Apa yang dapat saya lakukan untuk hanya menampilkannya sekali, bukan 3 kali?


person Mat Koffman    schedule 20.07.2019    source sumber
comment
Adakah kemungkinan setupRemoteTransportControls sendiri dipanggil lebih dari sekali?   -  person matt    schedule 20.07.2019
comment
Terima kasih, itu benar.   -  person Mat Koffman    schedule 21.07.2019
comment
Keren, saya akan memberikannya sebagai jawaban.   -  person matt    schedule 22.07.2019


Jawaban (1)


Masalahnya mungkin Anda menelepon setupRemoteTransportControls beberapa kali. Setiap kali Anda melakukannya, Anda memanggil commandCenter.nextTrackCommand.addTarget dan menyiapkan pasangan target tindakan baru (tanpa menghapus yang sudah ada). Jadi ketika pengguna menekan tombol, semua pasangan itu akan menyala.

person matt    schedule 21.07.2019
comment
Halo matt, Jika saya menyebutkan setupRemoteTransportControls hanya di homeController saya, maka ini berfungsi untuk semua viewcontroller? - person Yogesh Patel; 10.03.2021