远程通知中的自定义声音 iOS 10,swift 3

Posted

技术标签:

【中文标题】远程通知中的自定义声音 iOS 10,swift 3【英文标题】:Custom sounds in remote notifications iOS 10, swift 3 【发布时间】:2016-10-05 15:14:05 【问题描述】:

我对远程通知中的自定义声音有一个大问题。

这是我的场景:

我有两种类型的通知,每一种都有自定义声音。当我的应用程序处于非活动状态或在后台时,声音就像魅力一样播放,并且操作系统在通知中心横幅警报中显示通知。

当在前台收到通知时,我处理通知,提取 aps 声音元素并通过 AVAudioPlayer 播放声音:

func playSound(_ sound: String) 
    myLog("Let's play sound \(sound)")

    // Plays new sound file
    DispatchQueue.main.async  
        // Stops last player if playing
        if (self.soundPlayer != nil) 
            if (self.soundPlayer.isPlaying) 
                self.soundPlayer.stop()
            
        
        do 
            let path = Bundle.main.path(forResource: sound, ofType:nil)!
            let url = URL(fileURLWithPath: path)
            self.soundPlayer = try AVAudioPlayer(contentsOf: url)
            self.soundPlayer.delegate = self
            if (self.soundPlayer.prepareToPlay()) 
                self.soundPlayer.play()
            
         catch let error  
            myLog("Error playing .caf file: \(error)")
        
    


问题从这里开始。如果应用程序返回后台 - 在执行我的播放器代码时处于非活动状态,通知中心的操作系统警报将不再播放自定义声音。

总结:

应用处于非活动状态 - 后台收到通知 -> 自定义声音播放正常。

应用前台收到通知 -> 代码通过 playSound 函数播放声音,然后如果应用在后台非活动状态下收到其他通知,操作系统播放默认通知声音。

提前致谢。

【问题讨论】:

【参考方案1】:

问题已自动解决。删除应用程序,声音恢复正常。

【讨论】:

我也在使用 AVPlayer 在应用程序处于前台时播放声音并且效果很好。但是在触发本地通知时的后台模式下,会播放默认通知声音而不是自定义声音。但是,使用“didReceiveLocalNotification”方法在 ios9 中一切正常。有什么帮助吗?

以上是关于远程通知中的自定义声音 iOS 10,swift 3的主要内容,如果未能解决你的问题,请参考以下文章

iOS 无法为远程通知播放自定义声音

远程通知音量级别与应用程序中播放的声音不同

Android推送通知的自定义声音不起作用(FCM)

来自 URL iOS Swift 的本地通知自定义声音

Xamarin.Android 无法在 Android 10 (Q) 中将录制的自定义声音用于推送通知

Android 版 Chrome 中的自定义网络通知声音