在 Flutter 中使用 url_launcher 包打开 Facebook 应用

我试图在 Flutter 的公司页面上打开 Facebook 应用程序,但它一直在 Web 浏览器中打开它。

它只是一个简单的小部件,可以从列表中输出一行社交媒体图标:

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

class SocialMediaLinks extends StatelessWidget {
  SocialMediaLinks({Key? key}) : super(key: key);

  final List<Map<dynamic, dynamic>> icons = [
    {
      'name': 'twitter',
      'launchUrl': 'twitter://PAGENAME',
      'backupUrl': 'https://twitter.com/PAGENAME',
    },
    {
      'name': 'facebook',
      'launchUrl': 'fb://page/PAGEID',
      'backupUrl': 'https://www.facebook.com/PAGENAME',
    },
    {
      'name': 'instagram',
      'launchUrl': 'instagram://PAGENAME',
      'backupUrl': 'https://www.instagram.com/PAGENAME',
    }
  ];

  @override
  Widget build(BuildContext context) {
    return Row(
      children: [
        for (Map i in icons)
          IconButton(
            onPressed: () async {
              await canLaunch(i['launchUrl'])
                  ? launch(
                      i['launchUrl'],
                      forceSafariVC: false,
                      forceWebView: false,
                    )
                  : launch(
                      i['backupUrl'],
                      forceSafariVC: false,
                      forceWebView: false,
                    );
            },
            splashRadius: 30.0,
            iconSize: 38.0,
            icon: Image.asset(
              "assets/images/icons/${i['name']}.png",
              color: Colors.white,
            ),
          ),
      ],
    );
  }
}

Twitter 和 Instagram 在他们的应用程序中工作和打开,但 Facebook 仍然只在网络浏览器中打开。我在 stackoverflow 上尝试了很多解决方案,但无济于事。我错过了什么吗?

谢谢。

stack overflow Open Facebook app with url_launcher package in Flutter
原文答案

答案:

作者头像

我发现 Facebook 应用程序中配置的受支持 URL 存在限制。至少在 Android 中,虽然 Facebook 应用程序支持 facebook.com ,但我注意到当它是指向特定帖子的链接时,Facebook 应用程序会打开,即 https://www.facebook.com/$profileId/posts/$postId

Facebook app supported links

但是,Facebook 应用程序似乎无法处理指向个人资料或页面的直接链接,即 https://www.facebook.com/$profileId

如果您要链接到 Facebook 中的个人资料/页面,您可以在个人资料/页面中固定帖子并共享 Facebook 帖子的链接作为解决方法。这应该会成功打开设备上安装的 Facebook 应用程序。