MPRemoteCommandCenter SomeTimes не отображается - PullRequest
0 голосов
/ 11 июня 2018

У меня есть музыкальный проигрыватель, который использует Superpowered в качестве аудиоплеера.Я следовал этой статье , чтобы реализовать виджет игрока.Тем не менее, виджет иногда появляется, а часто нет. Я хочу, чтобы виджет проигрывателя отображался при воспроизведении звука.

RemoteCommandManager.swift : (из статьи)

AppDelegate.swift :

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.beginReceivingRemoteControlEvents()
        // Override point for customization after application launch.

        // Initializer the `RemoteCommandManager`.
        remoteCommandManager = RemoteCommandManager()

        // Always enable playback commands in MPRemoteCommandCenter.
        remoteCommandManager.activatePlaybackCommands(true)

        // Setup AVAudioSession to indicate to the system you how intend to play audio.
        let audioSession = AVAudioSession.sharedInstance()

        do {
            try audioSession.setCategory(AVAudioSessionCategoryPlayback, mode: AVAudioSessionModeDefault)
        }
        catch {
            print("An error occured setting the audio session category: \(error)")
        }


        return true
}

PlayerManager.swift :

func play() {
    let _ = try? AVAudioSession.sharedInstance().setActive(true)
    superpowered.play()
}

ОБНОВЛЕНИЕ:

Я заметил следующий сценарий:

Если воспроизводится дорожка iTunes (т. Е. Присутствует виджет проигрывателя), тогда я воспроизводю аудиофайл с помощью приложения, виджет проигрывателя изменяется так, что он показываетИнформация о моем приложении.

Я предполагаю, что когда я активирую аудио сеанс, виджет проигрывателя переключается с iTunes на мое приложение.Однако, когда виджет проигрывателя отсутствует, активация аудио-сеанса не может его представить.

1 Ответ

0 голосов
/ 19 июня 2018

попробуйте настроить audioSession на активное в AppDelegate, чуть выше возвращаемой функции, func application (_ application: UIApplication, didFinishLaunchingWithOptions ....

// Set the AVAudioSession as active.  This is required so that your application becomes the "Now Playing" app.
    do {
        try audioSession.setActive(true, with: [])
    }
    catch {
        print("An Error occured activating the audio session: \(error)")
    }

и проверитьесли это поможет.

...