You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Multiplatform是否支持IFrame元素?Jetpack Compose跨端嵌YouTube视频需求

跨平台Jetpack Compose展示YouTube视频方案

核心思路

Compose Multiplatform没有原生IFrame组件,可通过WebView封装实现类似效果,直接加载YouTube嵌入URL,适配Android和iOS双平台。

实现步骤

1. 配置依赖

在共享模块的build.gradle.kts中添加WebView依赖:

implementation("androidx.compose.ui:ui-webview:1.6.0")

iOS端需在iosApp的Podfile中添加:

pod 'WebKit'

2. 封装跨平台WebView组件

先定义共享接口:

@Composable
expect fun YoutubeWebView(videoUrl: String)

Android端实现

@Composable
actual fun YoutubeWebView(videoUrl: String) {
    AndroidView(factory = { context ->
        WebView(context).apply {
            settings.javaScriptEnabled = true
            settings.mediaPlaybackRequiresUserGesture = false // 可选:允许自动播放
            loadUrl(videoUrl)
        }
    })
}

iOS端实现

@Composable
actual fun YoutubeWebView(videoUrl: String) {
    UIKitView(factory = {
        WKWebView().apply {
            load(URLRequest(url = URL(string = videoUrl)!!))
        }
    })
}

3. 加载YouTube视频

获取视频嵌入URL(格式为https://www.youtube.com/embed/[视频ID]),在Compose界面调用组件:

@Composable
fun YoutubeVideoPlayer() {
    val videoEmbedUrl = "https://www.youtube.com/embed/dQw4w9WgXcQ"
    YoutubeWebView(videoUrl = videoEmbedUrl)
}

注意事项

  • 确保设备可访问YouTube服务
  • iOS端无需额外配置ATS(YouTube嵌入链接为HTTPS)
  • 可自定义WebView尺寸、添加进度条或控制按钮优化体验

内容的提问来源于stack exchange,提问作者avishak chakroborty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 20:23:11