Flutter url_launcher открывает ссылку на Facebook внутри приложения (Facebook), но в IOS он просто открывает facebook, а не ссылку

Я использовал пакет 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");
        }
      }

1 ответ

Моя рабочая функция:

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 в массив CFBundleURLSchemes в Info.plist:

Примечание: вы можете использовать https://lookup-id.com/, чтобы найти идентификатор своей страницы.

<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/ ВАШЕ ИМЯ', '')

Другие вопросы по тегам