Я пытаюсь создать динамические c ссылки в Firebase, которые перенаправят пользователей на указанную c страницу в моем приложении. Мне удалось создать ссылку, и она иногда работает, но иногда она перенаправляется в PlayStore даже после установки приложения. Я делаю это на физическом устройстве Android.
Что мне удалось понять, так это то, что если мое браузерное приложение (Chrome) открыто на фоне устройства, когда я нажимаю ссылку (то есть в SMS-сообщении или в WhatsApp) я попал в приложение (поведение, которое я хочу). В этой настройке он работает последовательно (разные ссылки, когда мое приложение открыто и закрыто в фоновом режиме)
Однако, если я нажимаю на ссылку, а приложение браузера не открывается в фоновом режиме, оно переводит меня в PlayStore .
Вот код, который я должен создать для ссылки:
Future<void> _createDynamicLink(bool short) async {
final DynamicLinkParameters parameters = DynamicLinkParameters(
uriPrefix: 'https://myappname.page.link',
link: Uri.parse('https://myappname/?gameCode=1111111'),
androidParameters: AndroidParameters(
packageName: 'com.last.myquarentineproject',
minimumVersion: 0,
),
dynamicLinkParametersOptions: DynamicLinkParametersOptions(
shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short,
),
socialMetaTagParameters: SocialMetaTagParameters(
title: 'Example Title',
description: 'Example Description',
),
);
Uri url;
if (short) {
final ShortDynamicLink shortLink = await parameters.buildShortLink();
url = shortLink.shortUrl;
} else {
url = await parameters.buildUrl();
}
}
А вот код, который я использую для получения ссылки:
void initState() {
handleDynamicLinks();
...
}
void handleDynamicLinks() async {
final PendingDynamicLinkData data = await FirebaseDynamicLinks.instance.getInitialLink();
_handleDeepLink(data);
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData dynamicLink) async {
_handleDeepLink(dynamicLink);
}, onError: (OnLinkErrorException e) async {
print('Link Failed: ${e.message}');
});
}
void _handleDeepLink(PendingDynamicLinkData data) {
final Uri deepLink = data?.link;
if (deepLink != null) {
receivedGameCode = deepLink.queryParameters['gameCode'];
print('receivedGameCode: $receivedGameCode');
print('_handleDeepLink | deeplink: $deepLink');
Navigator.pushNamed(context, '/joingGame');
} else { print('_handleDeepLink | deeplink: NO LINK'); }
}
Любая помощь высоко ценится! Спасибо