今日想要介绍 Deep Link,这边我只有接收 deeplink 的连结实作,并没有使用动态的 link。因为我没有上架 google store。
这篇要讲述,如何让一个连接跳到你的页面,如果没有注册的话则会跳到 apple store or Google Store。
dependencies:
firebase_dynamic_links: ^2.0.9
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with YOUR_SCHEME://YOUR_HOST -->
<data
android:scheme="https"
android:host="YOUR_SUBDOMAIN.page.link" />
</intent-filter>
在应用程序 Xcode 项目的Capabilities选项卡中,启用Associated Domains并将以下内容添加到Associated Domains列表中
applinks:YOUR_URL_PREFIX
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://example.com/promos</string>
<string>https://example.com/links/share</string>
</array>
Firebase 设定
当 App 没有在运行的话需要这个。
@override
void initState() {
super.initState();
initDynamicLinks();
}
void initDynamicLinks() async {
/// 当 app 处於活动状态
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData? dynamicLink) async {
final Uri? deepLink = dynamicLink?.link;
if (deepLink != null) {
Navigator.pushNamed(context, deepLink.path);
}
},
onError: (OnLinkErrorException e) async {
Navigator.pushNamed(context, '/error');
}
);
/// 当 app 处於非活动状态
final PendingDynamicLinkData? data = await FirebaseDynamicLinks.instance.getInitialLink();
final Uri? deepLink = data?.link;
if (deepLink != null) {
Navigator.pushNamed(context, deepLink.path);
}
}
程序码撷取撷取来自 => https://pub.dev/packages/firebase_dynamic_links
这边是建立动态 deepLink。
这边的 Sample Code 我没有实作他,因为我没有上架 google,所以没有 google store 的 page url。
所以我在 AndroidParameters、IosParameters 都有加上 fall 的网址。
Future<void> _createDynamicLink() async {
final DynamicLinkParameters parameters = DynamicLinkParameters(
uriPrefix: 'https://2021it30.page.link/',
link: Uri.parse('https://example.com/'),
androidParameters: AndroidParameters(
packageName: 'com.example.android',
minimumVersion: 125,
fallbackUrl: Uri.parse('https://www.google.com/')),
iosParameters: IosParameters(
bundleId: 'com.example.ios',
minimumVersion: '1.0.1',
appStoreId: '123456789',
fallbackUrl: Uri.parse('https://www.google.com/')),
googleAnalyticsParameters: GoogleAnalyticsParameters(
campaign: 'example-promo',
medium: 'social',
source: 'orkut',
),
itunesConnectAnalyticsParameters: ItunesConnectAnalyticsParameters(
providerToken: '123456',
campaignToken: 'example-promo',
),
socialMetaTagParameters: SocialMetaTagParameters(
title: 'Example of a Dynamic Link',
description: 'This link works whether app is installed or not!',
),
);
final ShortDynamicLink shortDynamicLink = await parameters.buildShortLink();
final Uri shortUrl = shortDynamicLink.shortUrl;
}
<<: [Day 18] 今晚我想来点tinyML加Arm不加香菜
前言 今天开始将踏入实作的部分,会带大家从环境开始配置,整个系列主要使用的编辑工具为Arduino ...
还记得便利贴专案做到哪了吗?专案目前用的架构模式是 MVVM :Jetpack Compose 所做...
输入处理,功能实现,输出处理,异常处理。 铁人赛第三天, 今天在进入对於方法的『 输入处理 』前:...
今天来补充一下”快速面试”还要再补充的地方,现在回想还是怕… 有一家厂商满特别的,一开始面试直接问...
Achieving low average tested error isn't good eno...