3

我使用了 Url_launcher 包;如果应用程序安装在浏览器上,我想在 Facebook 应用程序中打开 Facebook 链接。这在 Android 中很好地工作,但在 IOS 中它只打开 Facebook 应用程序而不是链接。

代码是:

String digital_url= "https://facebook.com/AliForDigitalIsrael/";

    new ListTile(
                            leading: new SvgPicture.asset(
                              'assets/images/ic_menu_fb.svg',
                              height: 24.0,
                              width: 24.0,
                              color: Colors.black54,
                            ),
                            title: new Text(
                              Strings.fbdigital,
                              textDirection: TextDirection.rtl,
                            ),
                            onTap: () async {
                              var fbUrl =
                                  "fb://facewebmodal/f?href=" + Strings.digital_url;
                              launchFacebook(fbUrl, Strings.digital_url);
                              hideDrawer();
                            },
    
                          ),
         Future<void> launchFacebook(String fbUrl,String fbWebUrl)
      async {
        try {
          bool launched = await launch(fbUrl, forceSafariVC: false);
          print("Launched Native app $launched");
    
          if (!launched) {
            await launch(fbWebUrl, forceSafariVC: false);
            print("Launched browser $launched");
          }
        } catch (e) {
          await launch(fbWebUrl, forceSafariVC: false);
          print("Inside catch");
        }
      }
4

1 回答 1

8

我的工作职能:

void _launchSocial(String url, String fallbackUrl) async {
  // Don't use canLaunch because of fbProtocolUrl (fb://)
  try {
    bool launched =
        await launch(url, forceSafariVC: false, forceWebView: false);
    if (!launched) {
      await launch(fallbackUrl, forceSafariVC: false, forceWebView: false);
      }
  } catch (e) {
    await launch(fallbackUrl, forceSafariVC: false, forceWebView: false);
  }
}

然后在 onPressed 或 onTab 中:

_launchSocial('fb://profile/408834569303957', 'https://www.facebook.com/dorockxl')

不要忘记将 fbYOURPAGEID 添加到 Info.plist 中的 CFBundleURLSchemes 数组中:

注意:您可以使用https://lookup-id.com来查找您页面的 id

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb408834569303957</string>
        </array>
    </dict>
</array>

顺便说一句,您无需额外设置即可将此方法用于 Twitter 和 Instagram。Url 足以打开这些原生应用程序:

_launchSocial('https://www.instagram.com/YOURNAME/', '')

_launchSocial('https://twitter.com/YOURNAME', '')

于 2020-08-02T03:00:24.513 回答