Wintermelon__zzz 2017-05-14 04:18 采纳率: 0%
浏览 1008

IOS在微信内置浏览器请求获取后台传过来的音频地址播放问题?

IOS在微信内置浏览器请求获取后台传过来的音频地址 然后点击播放怎么需要请求好几次 才能请求到资源进行加载播放 每次audio.networkState属性总是 0或1 只有3的时候好像才能播放 我应该怎么做才能让他直接请求到资源呢

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-05 21:13
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于iOS和微信内置浏览器对音频资源处理的不同导致的。微信内置浏览器只支持静态音频文件,不支持网络请求的动态音频。

    为了解决这个问题,你可以使用以下方法:

    1. 将音频文件保存到本地,然后在播放时从本地读取。

    2. 使用第三方库如AFNetworking来发送网络请求并下载音频。

    下面是一个简单的示例代码:

    import UIKit
    import AFNetworking
    
    class ViewController: UIViewController {
        @IBOutlet weak var audioView: AVAudioPlayer!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            let url = "https://example.com/audio.mp3"
            let task = AFRequest(taskName: "Download Audio", completionHandler: { (request, response, error) in
                if error != nil {
                    print("Error downloading audio: \(error)")
                    return
                }
                
                let data = response?.data
                
                if data == nil {
                    print("No data received from server")
                    return
                }
                
                do {
                    let audioData = try Data(contentsOf: URL(string: url)!)
                    
                    self.audioView?.prepareToPlay()
                    self.audioView?.play()
                    
                    // Now you can access the audio data as needed
                    
                } catch {
                    print("Error loading audio: \(error)")
                }
            })
            
            task?.send(url: url, parameters: nil, headers: nil, method: .get, success: nil, failure: nil)
        }
    }
    

    这段代码首先创建一个AFRequest对象,指定任务名称为"Download Audio"。然后设置了一个completion handler,当成功下载音频数据时执行。在completion handler中,我们尝试将音频数据转换为AVAudioData,并将其提供给audioView。这样,audioView就可以开始播放音频了。

    评论

报告相同问题?