【发布时间】:2020-08-27 13:46:20
【问题描述】:
我正在使用动态链接来创建链接并将其从我的应用程序分享到社交媒体平台,我尝试在 WhatsApp 和 messager 上分享,它运行良好,没有任何问题。
尝试从 Facebook 打开链接时的唯一例外是,它首先打开 InAppBrowser,然后打开 Play 商店而不是我的应用程序!!!
如果对此问题有任何调整或解决方法,请在此处分享,因为所有应用营销露营都取决于 Facebook。
我不知道该放什么代码,因为 Facebook 是这里唯一的例外!
不管怎样,下面是分享和发起的代码:
class ShareBloc extends Bloc<ShareEvent, ShareState> {
final GlobalKey<NavigatorState> navigateKey;
ShareBloc(this.navigateKey): assert(navigateKey != null);
@override
ShareState get initialState => ShareInitial();
@override
Stream<ShareState> mapEventToState(
ShareEvent event,
) async* {
if ( event is OnDynamicLinkInitial ) {
final PendingDynamicLinkData pendingDynamicLinkData = await FirebaseDynamicLinks.instance.getInitialLink();
final Uri deepLink = pendingDynamicLinkData?.link;
if ( deepLink != null ) {
print(deepLink.path);
navigateKey.currentState.pushNamed(SearchPage.routeName);
}
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData pendingDynamicLinkData) async {
final Uri deepLink = pendingDynamicLinkData?.link;
if (deepLink != null) {
print(deepLink.path);
navigateKey.currentState.pushNamed(SearchPage.routeName);
}
},
onError: (OnLinkErrorException error) async {
print("ERR DeepLink: $error");
}
);
}
if ( event is ShareOnSocial ) {
try {
yield ShareLoading();
final DynamicLinkParameters dynamicLinkParameters = DynamicLinkParameters(
uriPrefix: 'http://xxx.page.link',
link: Uri.parse('https://xxx.xxx.com/xxx/xxx/${event.post.id}'),
androidParameters: AndroidParameters(
packageName: 'com.xxx.xxx',
minimumVersion: 17,
),
dynamicLinkParametersOptions: DynamicLinkParametersOptions(
shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short,
),
socialMetaTagParameters: SocialMetaTagParameters(
title: event.post.title,
// description: event.post.excerpt,
imageUrl: Uri.parse(event.post.image)
),
navigationInfoParameters: NavigationInfoParameters(
forcedRedirectEnabled: true
)
);
final shortDynamicLink = await dynamicLinkParameters.buildShortLink();
final Uri shortUrl = shortDynamicLink.shortUrl;
await Share.share(
"${event.post.title} $shortUrl",
subject: event.post.title,
);
yield ShareSuccess();
} catch (e) {
yield ShareFailure();
}
}
}
}
【问题讨论】:
-
你是怎么解决的?我有同样的问题。
-
没有解决方案,这是谷歌的一个错误,你必须等到他们修复它或者你使用另一个包,比如我已经完成的 uni_links flutter,它工作得很好。
-
你可以从这里查看的 uni_links 包:pub.dev/packages/uni_links
标签: firebase flutter dart firebase-dynamic-links