我基本上想在按下按钮时从我的应用中打开特定的youtube视频。如果youtube应用已安装在用户的设备上,则视频应在youtube应用中打开(而不是在浏览器或单独的网络视图中打开)。
我url_launcher为此使用了软件包,并且在android上运行良好。但是,在iOS上,即使已安装youtube应用程序,也不会打开它,而是会打开一个单独的Web窗口,其中相应的youtube URL显示为网页。
url_launcher
我以为可以覆盖这种行为,如下所示:
_launchURL() async { if (Platform.isIOS) { if (await canLaunch('youtube://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw')) { await launch('youtube://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw'); } else { if (await canLaunch('https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw')) { await launch('https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw'); } else { throw 'Could not launch https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw'; } } } else { const url = 'https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw'; if (await canLaunch(url)) { await launch(url); } else { throw 'Could not launch $url'; } } }
但这没用。以防万一,我使用以下导入:
import 'dart:io' show Platform; import 'package:url_launcher/url_launcher.dart';
我非常确定,youtube://URL方案可以正常运行(启动YouTube应用程序),因为我已经在第三方应用程序(Launch Center Pro和Pythonista)上对其进行了测试。
youtube://
我无法测试的最后一件事是,是否Platform.isIOS在我的iPhone上确实如此。
Platform.isIOS
有没有一种可行的方法可以使YouTube App摆脱困境?
我修好了它。我必须设置forceSafariVC: false,因为默认情况下为true,这会导致在应用程序内部的某种Webview中打开url。
forceSafariVC: false
_launchURL() async { if (Platform.isIOS) { if (await canLaunch('youtube://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw')) { await launch('youtube://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw', forceSafariVC: false); } else { if (await canLaunch('https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw')) { await launch('https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw'); } else { throw 'Could not launch https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw'; } } } else { const url = 'https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw'; if (await canLaunch(url)) { await launch(url); } else { throw 'Could not launch $url'; } }
这实际上是在url_launcher文档中记录的,但是有些隐藏…