Swift MPRemoteCommandCenter nextTrackCommand ได้รับการเรียก 3 ครั้ง

ฉันใช้ MPRemoteCommandCenter เพื่อเปลี่ยนเพลงในแอปวิทยุเพลงของฉัน แต่เมื่อฉันกดปุ่มถัดไปจากหน้าจอล็อค มันจะกระโดด 3 ก้าวจากหนึ่งขั้น

นี่คือรหัสของฉัน:

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
        }
}

ผลลัพธ์คือ: ถัดไป ถัดไป ถัดไป

แต่ฉันกดปุ่มเพียงครั้งเดียว ฉันจะทำอย่างไรเพื่อส่งออกเพียงครั้งเดียวเท่านั้นถึง 3 ครั้ง?


person Mat Koffman    schedule 20.07.2019    source แหล่งที่มา
comment
มีโอกาสใดบ้างที่ setupRemoteTransportControls จะถูกเรียกมากกว่าหนึ่งครั้ง?   -  person matt    schedule 20.07.2019
comment
ขอบคุณครับ ถูกต้องแล้วครับ   -  person Mat Koffman    schedule 21.07.2019
comment
เจ๋งฉันจะให้มันเป็นคำตอบ   -  person matt    schedule 22.07.2019


คำตอบ (1)


ปัญหาอาจเป็นไปได้ว่าคุณกำลังโทร setupRemoteTransportControls หลายครั้ง ทุกครั้งที่คุณดำเนินการ คุณจะโทร commandCenter.nextTrackCommand.addTarget และตั้งค่าคู่เป้าหมายการกระทำใหม่ (โดยไม่ต้องลบคู่ที่มีอยู่) ดังนั้นเมื่อผู้ใช้กดปุ่ม คู่เหล่านั้นทั้งหมดก็จะเริ่มทำงาน

person matt    schedule 21.07.2019
comment
สวัสดี Matt ถ้าฉันพูดถึง setupRemoteTransportControls เฉพาะใน homeController ของฉันเท่านั้น มันจะใช้ได้กับ viewcontrollers ทั้งหมดหรือไม่ - person Yogesh Patel; 10.03.2021