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