简体   繁体   中英

Why Firebase dynamic link is always null?

I created a Dynamic link through createDynamicLink that is inside the class DynamicLinkService , after this I use retrieveDynamicLink for the part of reading the link that is opened from the android browser, but it prints that it is null, therefore it does not enter the if and does not push to another route inside the if

class DynamicLinkService {
  Future<void> retrieveDynamicLink(BuildContext context) async {
    try {
      final PendingDynamicLinkData? data =
          await FirebaseDynamicLinks.instance.getInitialLink();
      final Uri? deepLink = data?.link;
      print("deepLink: $deepLink");

      if (deepLink != null) {
        print("deepLink If: $deepLink");
        String deepLinks = deepLink.toString();
        Navigator.of(context).push(MaterialPageRoute(
            builder: (context) => linkInvitacionScreen(deepLinks)));
      }
    } catch (e) {
      print(e.toString());
    }
  }

  Future<String> createDynamicLink(String groupID) async {
    final DynamicLinkParameters parameters = DynamicLinkParameters(
      uriPrefix: 'https://notforget.page.link/',
      link: Uri.parse(
          'https://notforget.com/groupid?$groupID'),
      androidParameters: const AndroidParameters(
        packageName: 'com.example.not_forget_flutter',
        minimumVersion: 1,
      ),
    );

    final ShortDynamicLink shortDynamicLink =
        await FirebaseDynamicLinks.instance.buildShortLink(parameters);
    final Uri shortUrl = shortDynamicLink.shortUrl;

    print(shortUrl);
    return shortUrl.toString();
  }
}

intent filter of AndroidManifest

<activity
        android:name=".MainActivity"
        android:exported="true"
        android:launchMode="singleTop"
        android:theme="@style/LaunchTheme"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">
        <meta-data
          android:name="io.flutter.embedding.android.NormalTheme"
          android:resource="@style/NormalTheme"
          />
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
        <!-- Deep linking -->
        <meta-data android:name="flutter_deeplinking_enabled" android:value="true" />
        <intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http" android:host="notforget.page.link" />
            <data android:scheme="https" />
        </intent-filter>

    </activity>

i tried various solutions but none led me to get a value in deeplink , what am i doing wrong?, thanks.

Replace Your Host From android:host="notforget.page.link" To android:host="notforget.page.link"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM