【发布时间】:2021-10-28 23:17:30
【问题描述】:
我正在尝试在我的 Flutter 应用中使用动态链接来邀请新用户。
它在 Android 上运行良好,但在 IOS 上无法运行。
消息是:
2021-08-30 15:31:09.260470+0900 Runner[9221:902508] 8.3.0 - [Firebase/Analytics][IACS023001] Deep Link does not contain valid required params. URL params: {
"_cpb" = 1;
"_cpt" = cpit;
"_fpb" = "CJsFEPcCGgVrby1rcg==";
"_iumchkactval" = 1;
"_iumenbl" = 1;
"_osl" = "https://myapp.page.link/ryZWzXFzVqY3sjE4A";
"_plt" = 981;
"_uit" = 2105;
apn = "com.example.myapp";
cid = 2464839987823306368;
ibi = "com.example.myappios";
isi = app store id;
link = "https://invite.friends.myapp/invite_from?uid={uid_string}";
}
我的代码:
生成动态链接
String? uid = FirebaseAuth.instance.currentUser?.uid;
final DynamicLinkParameters parameters =
DynamicLinkParameters(
uriPrefix: 'https://potendogs.page.link',
link: Uri.parse(
'https://invite.friends.myapp/invite_from?uid=$uid'),
androidParameters: AndroidParameters(
packageName: 'com.example.myapp',
),
iosParameters: IosParameters(
bundleId: 'com.example.myappios',
appStoreId: 'app store id',
),
);
final ShortDynamicLink shortUrl =
await parameters.buildShortLink();
Share.share('invite_message'.tr() + shortUrl.shortUrl.toString());
接收动态链接
void initDynamicLinks() async {
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData? dynamicLink) async {
final Uri? deepLink = dynamicLink?.link;
if (deepLink != null) {
String? uid = FirebaseAuth.instance.currentUser?.uid;
String? ownerUid = deepLink.queryParameters['uid'];
if (uid != null && ownerUid != null) {
_inviteCouponBloc
.add(NewUserInviteCouponEvent(uid: uid, ownerUid: ownerUid));
}
}
}, onError: (OnLinkErrorException e) async {
print('OnLinkError');
print(e.message);
print(e.stacktrace);
});
final PendingDynamicLinkData? data =
await FirebaseDynamicLinks.instance.getInitialLink();
final Uri? deepLink = data?.link;
if (deepLink != null) {
if (widget.isNewUser) {
String? uid = FirebaseAuth.instance.currentUser?.uid;
String? ownerUid = deepLink.queryParameters['uid'];
if (uid != null && ownerUid != null) {
_inviteCouponBloc
.add(NewUserInviteCouponEvent(uid: uid, ownerUid: ownerUid));
} else {
print('firebase uid is null');
}
}
}
}
我打电话给initDynamicLinks()initState()
生成的动态链接(短)如下所示:https://myapp.page.link/Df6MA2Xf34CTENgs9 但是在IOS中,一些日志显示了IOS如何获取动态链接链接这个
"iOS handleLink: https://myapp.page.link/?link=https://invite.friends.myapp/invite_from?uid%3D66kWqpCU1ddHfErvtyucOHK3KoI3&apn=com.example.myapp&isi={app store id}&ibi=com.example.myappios&cid=2464839987823306368&_osl=https://myapp.page.link/ryZWzXFzVqY3sjE4A&_fpb=CJsFEPcCGgVrby1rcg==&_cpt=cpit&_iumenbl=1&_iumchkactval=1&_plt=981&_uit=2105&_cpb=1"
我该如何解决这个问题?
注意
我有不同的 ios 和 android 捆绑 ID。
android 捆绑包 ID:com.example.myapp
ios bundle id: com.example.myappios
我填写了 firebase 控制台上的每个输入。
此外,当我生成动态链接时会出现警告:
[Android 应用 'com.example.myappios' 缺少 SHA256。应用程序未启用 AppLinks。 [https://firebase.google.com/docs/dynamic-links/debug#android-sha256-absent],
iOS 应用“com.example.myapp”缺少应用 ID 前缀。应用程序未启用 UniversalLinks。 [https://firebase.google.com/docs/dynamic-links/debug#ios-team-id-absent],
没有配置可以防止在此域 https://myapp.page.link 上进行网络钓鱼。将 URL 模式设置为在 Firebase 动态链接控制台中列入白名单。 [https://support.google.com/firebase/answer/9021429]]
编辑
来自dynamicLink?.link 和await FirebaseDynamicLinks.instance.getInitialLink()?.link 的变量deepLink 为空
【问题讨论】:
标签: firebase flutter firebase-dynamic-links