gpt4 book ai didi

ios - 如何在初始化 AVURLAsset 时根据 AVURLAssetHTTPCookiesKey 设置正确的 cookie 值

转载 作者:行者123 更新时间:2023-11-29 05:18:54 32 4
gpt4 key购买 nike

我必须播放 HLS 流,并且它是 protected 。为了下载 list 文件和进一步的 ts 文件,期望请求发送有效的 Cookies 信息。我确实从服务器收到 Cookie 信息,但它不是响应 header 的一部分,而是作为响应字符串的一部分。这意味着 Cookies 不会自动成为 NSHTTPStorage 的一部分,应用程序必须使用响应字符串并从那里获取 Cookies 信息;还需要在初始化 AVURLAsset 时进行设置。根据 AVURLAsst 文档,为了发送 Cookie 信息,我们应该使用选项“AVURLAssetHTTPCookiesKey”。我在下面的代码中提到了如何使用此键初始化 AVURLAsset

    let cookieOptions = [AVURLAssetHTTPCookiesKey: Any]
let assets = AVURLAsset(url: url as URL, options: cookieArrayOptions)

我的主要问题是如何针对 AVURLAssetHTTPCookiesKey 设置值。它采用“Any”类型的值。因为 Apple 只是提到它期望 Any 值,但没有说明它在内部如何以正确的格式解释和转换该值。

我尝试了两种方法来设置值:假设我必须设置两个 Cookies 键,即 MyCookies1、MyCookies2

使用 NSHTTPStorage 的方法 1

let propertiesKey1 = [HTTPCookiePropertyKey.domain : "Domain=abc.com",HTTPCookiePropertyKey.path:"/",HTTPCookiePropertyKey.secure:true,HTTPCookiePropertyKey.init("HttpOnly"):true,HTTPCookiePropertyKey.value:"abc1",HTTPCookiePropertyKey.name:"MyCookies1"] as [HTTPCookiePropertyKey : Any]
let propertiesKey2 = [HTTPCookiePropertyKey.domain : "Domain=abc.com",HTTPCookiePropertyKey.path:"/",HTTPCookiePropertyKey.secure:true,HTTPCookiePropertyKey.init("HttpOnly"):true,HTTPCookiePropertyKey.value:"abc2",HTTPCookiePropertyKey.name:"MyCookies2"] as [HTTPCookiePropertyKey : Any]
let cookieKey1 = HTTPCookie(properties: propertiesKey1)
let cookieKey2 = HTTPCookie(properties: propertiesKey2)
HTTPCookieStorage.shared.setCookie(cookieKey1!)
HTTPCookieStorage.shared.setCookie(cookieKey2!)
let cookiesArray = HTTPCookieStorage.shared.cookies!
let cookieArrayOptions = [AVURLAssetHTTPCookiesKey: cookiesArray]
guard let url = URL(string:"abc.com") else { return }
let assets = AVURLAsset(url: url as URL, options: cookieArrayOptions)

但这不起作用,AVPlayer 刚刚初始化并停止工作

方法二

 let values = ["Cookie": "MyCookies1=abc1; MyCookies2=abc2"]
let cookieArrayOptions = [AVURLAssetHTTPCookiesKey: values]
guard let url = URL(string:"abc.com") else { return }
let assets = AVURLAsset(url: url as URL, options: cookieArrayOptions)

但是这个选项总是崩溃。可能是我没有以正确的格式设置值。

我已尽力提供尽可能多的信息,但如果您需要任何进一步的信息,请告诉我。

最佳答案

经过几次尝试,我能够使用 NSHTTPStorage 使其与方法 1 一起使用。我犯了一个错误,没有使用 HTTPS 流媒体 URL。我已经允许通过传递 ATS 来播放非 HTTP url 并允许任意加载。但 AVURLAssetHTTPCookiesKey 期望仅提供为 cookie 设置的 HTTPS url。我使用了 HTTPS 流,最终在播放 HLS 流时下载 list /段文件时,Cookie 开始在请求 header 中内部发送

关于ios - 如何在初始化 AVURLAsset 时根据 AVURLAssetHTTPCookiesKey 设置正确的 cookie 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58871648/

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