当应用程序发送到后台并返回到前台时,IOS13音频问题

时间:2020-07-08 15:26:58

标签: swift scenekit avaudioplayer

在iOS 13中,当我将我的SceneKit应用程序发送到后台并带回前景时,我遇到了播放音频的问题。

在将应用程序发送到后台之前,以下代码可以很好地播放AudioSource。

var hitSound: SCNAudioSource!
hitSound = SCNAudioSource(named: "hitSound.mp3")!
hitSound = false
rootNode.runAction(SCNAction.playAudio(hitSound, waitForCompletion: false))

当我将应用程序发送到后台时,下面的控制台中发生了以下警告。

[avae]     AVAEInternal.h:109   [AVAudioEngineGraph.mm:1544:Start: (err = PerformCommand(*ioNode, kAUStartIO, NULL, 0)): error 561015905

此外,当应用重新回到前台时,会发生以下警告并停止播放SCNAudioSource声音。在iOS 12中,不会发生此类问题。

[avae]     AVAEInternal.h:76    required condition is false: [AVAudioPlayerNode.mm:712:ScheduleBuffer: (_outputFormat.channelCount == buffer.format.channelCount)]

1 个答案:

答案 0 :(得分:0)

在启用了“签名和功能”下的“后台模式”中的音频并将以下代码添加到didFinishLaunchingWithOptions下的AppDelegate中之后,问题已解决。

mtime = function(tx){
  utx = unlist(strsplit(tx,split=" ",perl=T))
  if (length(utx)==4) {
    sum(as.numeric(utx[c(1,3)])*c(60,1))
  } else as.numeric(utx[c(1)]) 
}

stime = sapply(time,mtime)

# 1 hour 1 minute 2 hours 3 minutes        45 minutes 
#              61               123                45 
相关问题