From ef4bb6c7a84e37f204949458807f476e93df75b9 Mon Sep 17 00:00:00 2001 From: Bryce Lampe Date: Sun, 29 Jan 2023 19:54:12 -0800 Subject: [PATCH 1/2] Handle skip track events on iOS --- ios/App/Shared/player/AudioPlayer.swift | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ios/App/Shared/player/AudioPlayer.swift b/ios/App/Shared/player/AudioPlayer.swift index 441eb8e5..88a488f7 100644 --- a/ios/App/Shared/player/AudioPlayer.swift +++ b/ios/App/Shared/player/AudioPlayer.swift @@ -608,6 +608,23 @@ class AudioPlayer: NSObject { return .success } + commandCenter.nextTrackCommand.isEnabled = true + commandCenter.nextTrackCommand.addTarget { [weak self] _ in + guard let currentTime = self?.getCurrentTime() else { + return .commandFailed + } + self?.seek(currentTime + Double(deviceSettings.jumpForwardTime), from: "remote") + return .success + } + commandCenter.previousTrackCommand.isEnabled = true + commandCenter.previousTrackCommand.addTarget { [weak self] _ in + guard let currentTime = self?.getCurrentTime() else { + return .commandFailed + } + self?.seek(currentTime - Double(deviceSettings.jumpBackwardsTime), from: "remote") + return .success + } + commandCenter.changePlaybackPositionCommand.isEnabled = true commandCenter.changePlaybackPositionCommand.addTarget { [weak self] event in guard let event = event as? MPChangePlaybackPositionCommandEvent else { From 3ef6c345e43f0a7ee7489687259410da62214d99 Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 30 Jan 2023 08:14:32 -0600 Subject: [PATCH 2/2] Fix Realm wrong thread crash by setting values from deviceSettings outside of commandCenter functions --- ios/App/Shared/player/AudioPlayer.swift | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ios/App/Shared/player/AudioPlayer.swift b/ios/App/Shared/player/AudioPlayer.swift index 88a488f7..da9c7ffc 100644 --- a/ios/App/Shared/player/AudioPlayer.swift +++ b/ios/App/Shared/player/AudioPlayer.swift @@ -571,6 +571,8 @@ class AudioPlayer: NSObject { } let commandCenter = MPRemoteCommandCenter.shared() let deviceSettings = Database.shared.getDeviceSettings() + let jumpForwardTime = deviceSettings.jumpForwardTime + let jumpBackwardsTime = deviceSettings.jumpBackwardsTime commandCenter.playCommand.isEnabled = true commandCenter.playCommand.addTarget { [weak self] event in @@ -584,7 +586,7 @@ class AudioPlayer: NSObject { } commandCenter.skipForwardCommand.isEnabled = true - commandCenter.skipForwardCommand.preferredIntervals = [NSNumber(value: deviceSettings.jumpForwardTime)] + commandCenter.skipForwardCommand.preferredIntervals = [NSNumber(value: jumpForwardTime)] commandCenter.skipForwardCommand.addTarget { [weak self] event in guard let command = event.command as? MPSkipIntervalCommand else { return .noSuchContent @@ -596,7 +598,7 @@ class AudioPlayer: NSObject { return .success } commandCenter.skipBackwardCommand.isEnabled = true - commandCenter.skipBackwardCommand.preferredIntervals = [NSNumber(value: deviceSettings.jumpBackwardsTime)] + commandCenter.skipBackwardCommand.preferredIntervals = [NSNumber(value: jumpBackwardsTime)] commandCenter.skipBackwardCommand.addTarget { [weak self] event in guard let command = event.command as? MPSkipIntervalCommand else { return .noSuchContent @@ -613,7 +615,7 @@ class AudioPlayer: NSObject { guard let currentTime = self?.getCurrentTime() else { return .commandFailed } - self?.seek(currentTime + Double(deviceSettings.jumpForwardTime), from: "remote") + self?.seek(currentTime + Double(jumpForwardTime), from: "remote") return .success } commandCenter.previousTrackCommand.isEnabled = true @@ -621,7 +623,7 @@ class AudioPlayer: NSObject { guard let currentTime = self?.getCurrentTime() else { return .commandFailed } - self?.seek(currentTime - Double(deviceSettings.jumpBackwardsTime), from: "remote") + self?.seek(currentTime - Double(jumpBackwardsTime), from: "remote") return .success }