Итак, я уже несколько дней пытаюсь использовать API MusicKit. Я пытался использовать MPMusicPlayerApplicationController и MutableQueue.
У меня очередь уже инициализирована с использованием setQueue(with: [String])
с массивом идентификаторов магазинов для песен Apple Music. Затем я хочу разрешить пользователю переупорядочивать песни в очереди. Я использую следующий код, чтобы попытаться это сделать.
let musicPlayerController = MPMusicPlayerController.applicationQueuePlayer
musicPlayerController.perform(queueTransaction: { queue in
let afterItem = queue.items.first(where: { $0.playbackStoreID == predecessorId })
let descriptor = MPMusicPlayerStoreQueueDescriptor(storeIDs: [newItemId])
queue.insert(descriptor, after: afterItem)
}) { (queue, error) in
// Completion for when items' position update
if error != nil {
print(error!)
}
}
Приведенный выше код работает, как и ожидалось, если afterItem
равно нулю (т. е. песня правильно вставлена в начало очереди). Однако, если afterItem
не равно нулю, ничего не происходит. Очередь остается такой же, как если бы вставки не было, и в обработчике завершения не было ошибки. Эта проблема возникает независимо от того, находится ли вставляемая песня уже в очереди или нет.
Я пытаюсь изменить очередь неправильно?
queue
до и после, он останется прежним? Мне просто любопытно, откуда мы знаем, что ничего не происходит. Я не сомневаюсь в тебе (весь этот API ужасно глючит), просто любопытно. - person matt   schedule 30.05.2018queue.insert
независимо от того, какие песни. Пожалуйста, отправьте отчет об ошибке по этому поводу. - person matt   schedule 06.08.2018insert
равноnil
,queue
в обработчике завершения не отражает изменения в очереди. - person matt   schedule 06.08.2018