问题描述
我在 Firebase 控制台中创建了一个动态链接,并在 Flutter 中添加了代码以将我带到我的应用程序中的特定页面。这有效。我现在不确定如何在 Flutter 中创建更多动态链接,以便在 Firebase Console 中创建新的动态链接后将我带到我的应用程序中的更多/其他页面。我从教程中遵循以下代码:
runApp(MaterialApp(
debugShowCheckedModeBanner: false,title: 'Dynamic Links Example',routes: <String,WidgetBuilder>{
'/': (BuildContext context) => MyApp(),'/helloworld': (BuildContext context) => LinkPage(),},));
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _linkMessage;
bool _isCreatingLink = false;
String _testString =
"To test: long press link and then copy and click from a non-browser "
"app. Make sure this isn't being tested on iOS simulator and iOS xcode "
"is properly setup. Look at firebase_dynamic_links/README.md for more "
"details.";
@override
void initState() {
super.initState();
initDynamicLinks(); //
}
void setupNotification() async {
_firebaseMessaging.getToken().then((token) {
print(token);
});
_firebaseMessaging.configure(
onMessage: (Map<String,dynamic> message) async {
print("Message: $message");
},onResume: (Map<String,onLaunch: (Map<String,);
}
void initDynamicLinks() async {
FirebaseDynamicLinks.instance.onLink(
onSuccess: (PendingDynamicLinkData dynamicLink) async {
final Uri deepLink = dynamicLink?.link;
print(deepLink);
if (deepLink != null) {
Navigator.pushNamed(context,'/helloworld');
}
},onError: (OnLinkErrorException e) async {
print('onLinkError');
print(e.message);
});
final PendingDynamicLinkData data =
await FirebaseDynamicLinks.instance.getinitialLink();
final Uri deepLink = data?.link;
if (deepLink != null) {
Navigator.pushNamed(context,'/helloworld');
}
}
Future<void> _createDynamicLink(bool short) async {
setState(() {
_isCreatingLink = true;
});
final DynamicLinkParameters parameters = DynamicLinkParameters(
uriPrefix: 'http://cx4k7.app.goo.gl',link: Uri.parse('My http url'),androidParameters: AndroidParameters(
packageName: 'my package id/name',minimumVersion: 0,),dynamicLinkParametersOptions: DynamicLinkParametersOptions(
shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short,);
Uri url;
if (short) {
final ShortDynamicLink shortLink = await parameters.buildShortLink();
url = shortLink.shortUrl;
} else {
url = await parameters.buildUrl();
}
setState(() {
_linkMessage = url.toString();
_isCreatingLink = false;
});
}
解决方法
关于如果 deeplink not null 会发生什么的 if 语句是找到答案的关键。因此,只需编写一些 if 语句即可说明当深层链接与 FCM 控制台中的值相同时会发生什么