gpt4 book ai didi

ios - 当应用程序处于非事件状态时,如何通过点击 UNUserNotification 操作按钮中的播放按钮来启动音频播放器?

转载 作者:行者123 更新时间:2023-11-30 10:57:22 27 4
gpt4 key购买 nike

您好,我有一个音频播放器应用程序,其中有一个计时器部分。目标是使音频在特定日期和时间开始/停止。我已经使用 UNUserNotificationCenter 实现了此功能。当应用程序位于前台时,此功能工作正常。但是当应用程序处于 非事件/背景 状态时,播放器仅在应用程序打开且带到前台。任何人都可以帮助我吗?

     func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert, .badge, .sound])
}
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
print("Local notification received")

let application = UIApplication.shared
print(response.notification.request.content)

let identifier = response.actionIdentifier
let request = response.notification.request

if(identifier == "StartPlaying")
{
AudioManager.sharedInstance.setAudioPlayer(audioUrl: "http://athmaraksha.org/admin/uploads/audio/040D-Daivathinte Vagdhanangal-329.mp3", fromAudio: true)
AudioManager.sharedInstance.player?.play()


}
else if(identifier == "StopPlaying")
{
AudioManager.sharedInstance.player?.pause()

}

completionHandler()


}

最佳答案

当然有多种方法可以做到这一点。我更喜欢并且非常简单的一种方法是使用全局单例。

所以问题是在让您的应用程序从后台重新启动时处理来自推送通知的数据,对吧?

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler finishHandler: @escaping () -> Void) 方法中,这就是我们处理推送通知的地方,对吗?

我有一种方法可以检查当前是否可以推送或呈现屏幕(例如应用程序已完全打开,而不是从后台重新启动)。如果没有办法推送或呈现屏幕,因为应用程序只是从后台重新启动(意味着尚未向用户呈现任何屏幕),那么我会将数据保存到我上面提到的全局单例.

当根屏幕或主屏幕刚刚完全加载时,这意味着我们准备好检查推送通知中是否有已保存的数据,此时我们就准备好进行任何 UI 更改或演示/推送基于推送通知的屏幕。

我希望这个想法有帮助!

关于ios - 当应用程序处于非事件状态时,如何通过点击 UNUserNotification 操作按钮中的播放按钮来启动音频播放器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53801183/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com