Код: Выделить всё
if (!await launchUrl(
Uri.parse('$myAPI/$myAPIVersion/google/login?return_url=https://example.com/token'),
mode: LaunchMode.externalApplication
)) {
throw Exception('Could not launch');
}
Плагин url_launcher обеспечивает поддержку браузеров внутри приложений, но Я не понимаю, как заставить их работать в этом случае.
Я вижу два очевидных способа поставить обратную ссылку на приложение, но ни один из них не работает..
1. Универсальные ссылки
например,
Код: Выделить всё
// link to a universal link via https
if (!await launchUrl(
Uri.parse('$myAPI/$myAPIVersion/google/login?return_url=https://example.com/token'),
mode: LaunchMode.inAppBrowserView // use safariVC
)) {
throw Exception('Could not launch');
}
2. Ссылки на пользовательские схемы
например,
Определите пользовательскую схему, чтобы более четко указать предполагаемый пункт назначения перенаправления.
Определить схему:
Код: Выделить всё
CFBundleURLTypes
CFBundleURLName
com.example.app
CFBundleURLSchemes
myscheme
Код: Выделить всё
// link via myscheme
if (!await launchUrl(
Uri.parse('$myAPI/$myAPIVersion/google/login?return_url=myscheme://token'),
mode: LaunchMode.inAppBrowserView // use safariVC
)) {
throw Exception('Could not launch');
}
Код: Выделить всё
flutter: PlatformException(Error, Error while launching https://api.example.com/v1/google/login?return_url=myscheme://token, null, null)
flutter:
#0 UrlLauncherIOS._failedSafariViewControllerLoadException (package:url_launcher_ios/url_launcher_ios.dart:168:5)
#1 UrlLauncherIOS._mapInAppLoadResult (package:url_launcher_ios/url_launcher_ios.dart:142:15)
#2 UrlLauncherIOS.launchUrl (package:url_launcher_ios/url_launcher_ios.dart:93:14)
Я также отмечаю, что пробовал использовать flutter_custom_tabs, что позволило процессу входа в систему завершиться должным образом с использованием пользовательской схемы, но затем зависнуть с открытым браузером в конце потока.
Вопросы по теме это не обман:
- Перейдите обратно в приложение из url_launcher webview – Flutter – Android (в частности, в отношении WebView – который не подходит для потоков OAuth)
- url_launcher не открывает приложение на iOS, но работает на Android во флаттере (в частности, о canLaunch)
- iOS перенаправляет обратно к приложениям (специфично для Swift и для конкретного бизнес-кейса)
В конце концов, мне не удалось решить эту проблему с помощью url_launcher по причинам, указанным в комментариях.
Однако я был - смог используйте flutter_custom_tabs и решите проблему, когда браузер не закрывается (спойлер, мне просто нужно было ПРОЧИТАТЬ ДОКУМЕНТЫ
Подробнее здесь: https://stackoverflow.com/questions/783 ... to-ios-app