从 iOS 应用程序向 Chromecast 发送本地图像时出现问题
Posted
技术标签:
【中文标题】从 iOS 应用程序向 Chromecast 发送本地图像时出现问题【英文标题】:Trouble sending a local image to Chromecast from iOS app 【发布时间】:2018-06-05 18:24:19 【问题描述】:我正在使用 ios 11.4 和 Swift 4 构建一个 iOS 应用程序,该应用程序假设在 iOS 屏幕上显示本地图像库。当我从图库中选择一张图片时,我想通过 Chromecast 将该图片发送到电视屏幕。 我可以连接到我的 Chromecast 设备,但是当我尝试发送图像时,它只在电视屏幕上显示投射图标。这是将图像传输到 Chromecast 的代码:
PHImageManager.default().requestImage(for: asset, targetSize: targetSize, contentMode: .aspectFit, options: options, resultHandler: image, _ in
// If successful, show the image view and display the image.
guard let image = image else return
// Now that we have the image, show it.
imageview.isHidden = false
// Here the image is correctly displayed on the screen
imageview.image = image
// Checking if cast session started
if self.sessionManager.hasConnectedSession() == true
// Creating image name to save it as URL
var imageName = "Image_"
// Give image unique name
imageName = imageName + "\(self.imageNameInt)"
self.imageNameInt += 1
// Saving image to local URL so it will be compatible for use
// in GCKMediaInformation
let imageData = UIImageJPEGRepresentation(imageview.image!, 0.8)
let docDir = try! FileManager.default.url(for: .documentDirectory,
in: .userDomainMask, appropriateFor: nil, create: true)
let imageURL = docDir.appendingPathComponent(imageName)
try! imageData?.write(to: imageURL)
let metadata = GCKMediaMetadata(metadataType: .photo)
let imageAsset = imageURL.absoluteString
self.mediaInfo = GCKMediaInformation(
contentID: imageAsset,
streamType: .buffered,
contentType: "image/jpg",
metadata: metadata,
streamDuration: 0,
mediaTracks: nil,
textTrackStyle: nil,
customData: nil)
self.sessionManager.currentCastSession?.remoteMediaClient?.loadMedia(self.mediaInfo!)
)
每次调用 loadMedia 都会刷新电视屏幕,但唯一显示的是投射图标。有人可以查看这段代码,看看是否有问题导致图像无法发送到电视屏幕?
【问题讨论】:
你能把contentType: "image/jpeg"
和streamType:.none
换一下吗?
【参考方案1】:
我能够解决这个问题。为了能够将图像发送到 chromecast 并因此发送到电视屏幕,我必须将 Web 服务器嵌入到我的 iOS 应用程序中。然后,我必须在网络服务器上托管我想在电视上显示的每张图像,并将网络服务器 url 发送到 chromecast,以便 chromecast 能够向我的嵌入式服务器发出 http 请求并将图像拉到 chromecast。
【讨论】:
有一天我在使用 C# 时遇到了同样的问题。从控制台应用程序向 Chromecast 发送本地图像时出现问题。以上是关于从 iOS 应用程序向 Chromecast 发送本地图像时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
通过 Cast.CastApi.sendMessage 向 Chromecast 默认媒体接收器发送啥有效负载
单个 HTML 上的多个 Chromecast 应用开发密钥?