我想使用个人资料/业务 URL 从我的 flutter 应用程序重定向到社交媒体平台应用程序。我正在使用 url_launcher dart 包。我能够找到重定向到 Facebook 个人资料的端点,但不知道如何打开特定的 Instagram 和 Twitter 页面。
_launchFacebook(String? facebook) async {
final url = 'fb://facewebmodal/f?href=https://' + facebook!;
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
_launchTwitter(String? twitter) async {
final url = 'tw://' + twitter!;
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
_launchInstagram(String? instagram) async {
final url = 'in://' + instagram!;
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
Run Code Online (Sandbox Code Playgroud)
小智 8
Facebook 在这里有点奇怪,它需要一个特定的协议fb://facewebmodal/f?href=$url。
通常,应用程序会注册其网站的 URL 以进行深层链接,这意味着如果您没有安装相应的应用程序,它们将在您的浏览器中打开;如果您安装了相应的应用程序,它们将直接在其应用程序中打开。
这是我通常使用的实现,它绝对适用于 Facebook、Twitter、Instagram 和 LinkedIn。我对 Android 进行了特殊检查,这样如果您没有安装 Facebook,它将在浏览器中正确打开链接。
@override
Future<void> launchUrl(String url) async {
final _canLaunch = await canLaunch(url);
if (kIsWeb) {
if (_canLaunch) {
await launch(url);
} else {
throw "Could not launch $url";
}
return;
}
if (TargetPlatform.android) {
if (url.startsWith("https://www.facebook.com/")) {
final url2 = "fb://facewebmodal/f?href=$url";
final intent2 = AndroidIntent(action: "action_view", data: url2);
final canWork = await intent2.canResolveActivity();
if (canWork) return intent2.launch();
}
final intent = AndroidIntent(action: "action_view", data: url);
return intent.launch();
} else {
if (_canLaunch) {
await launch(url, forceSafariVC: false);
} else {
throw "Could not launch $url";
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以毫无问题地打开 及其https://instagram.com/username格式的链接https://twitter.com/username。
希望能帮助到你 !
一个简单的方法来做到这一点:
Future<void> _launchSocialMediaAppIfInstalled({
String url,
}) async {
try {
bool launched = await launch(url, forceSafariVC: false); // Launch the app if installed!
if (!launched) {
launch(url); // Launch web view if app is not installed!
}
} catch (e) {
launch(url); // Launch web view if app is not installed!
}
}
Run Code Online (Sandbox Code Playgroud)
然后简单地这样调用它:
_launchSocialMediaAppIfInstalled(
url: 'https://www.instagram.com/avey.world/', //Instagram
);
_launchSocialMediaAppIfInstalled(
url: 'https://www.facebook.com/avey.pal/', // Facebook
);
_launchSocialMediaAppIfInstalled(
url: 'https://twitter.com/avey_pal', // Twitter
);
_launchSocialMediaAppIfInstalled(
url: 'https://www.linkedin.com/company/avey-ai/', // Linkedin
);
...
Run Code Online (Sandbox Code Playgroud)
不要忘记将示例页面替换为您的示例页面;)就这样!
| 归档时间: |
|
| 查看次数: |
6809 次 |
| 最近记录: |