gpt4 book ai didi

ios - 在 ios swift 的 NotificationService 中播放流媒体 URL

转载 作者:行者123 更新时间:2023-11-28 13:32:48 26 4
gpt4 key购买 nike

我已经通过保存在磁盘中的方式在通知服务扩展中播放了视频。现在我想在通知服务扩展中播放流式 URL 作为附件。我试过直接将 URL 作为附件传递,但它在变量 attach1 中返回 nil。

下面是我的代码:

import UserNotifications
import UIKit

class NotificationService: UNNotificationServiceExtension {

var contentHandler: ((UNNotificationContent) -> Void)?
var bestAttemptContent: UNMutableNotificationContent?

override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)

//Media
func failEarly() {
contentHandler(request.content)
}

guard let content = (request.content.mutableCopy() as? UNMutableNotificationContent) else {
return failEarly()
}

guard let attachmentURL = content.userInfo["attachment_url"] as? String, let url = URL(string: attachmentURL) else {
return failEarly()
}

// Saving streaming url video
var attach1 : UNNotificationAttachment?
do {
attach1 = try UNNotificationAttachment(identifier: request.content.categoryIdentifier, url: url, options: nil)
} catch {
failEarly()
}

content.attachments = [attach1] as! [UNNotificationAttachment]
contentHandler(content.copy() as! UNNotificationContent)
}

override func serviceExtensionTimeWillExpire() {
// Called just before the extension will be terminated by the system.
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}

}

我的流媒体 URL 来自 Youtube .

我们将不胜感激。

最佳答案

有些场景你必须知道。

  1. 如果您正在使用内容扩展,那么 category 必须与 UNNotificationContentExtensionInfo.plist 文件中声明的相同。
  2. UserNotificationAttachment 无法存储数据 url。即它必须包含 fileUrl,它是在 UNNotificationServiceExtension 中下载的文件的 url,并在完成时返回。

所以,你下面的代码是完全错误的。

var attach1 : UNNotificationAttachment?
do {
attach1 = try UNNotificationAttachment(identifier: request.content.categoryIdentifier, url: url, options: nil)
} catch {
failEarly()
}

我不确定,但是,youtube 视频 url 链接无法在 AVPlayer 中播放,与 AVPlayer 一起使用时,应该在 url 中添加视频扩展名。

正确检查所有的东西。参见 UNNotificationServiceExtension & UNNotificationContentExtension了解更多信息。

关于ios - 在 ios swift 的 NotificationService 中播放流媒体 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57093913/

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