web-dev-qa-db-fra.com

Lien dynamique Firebase avec scintillement: l'URL du lien profond n'ouvre pas l'application

J'ai essayé d'ajouter un lien dynamique à mon flutter Android (non publiée) qui est en mode débogage et s'exécute sur un appareil physique. Firebase configuré, liens dynamiques dans la console Firebase. Tout fonctionne comme prévu sauf un. Lorsque deeplink ( https://www.mywebsite.com/deep-link-page ) est cliqué directement de n'importe où, il n'ouvre pas l'application. en cliquant sur le lien dynamique https: //myapp.page.link ouvre l'application comme prévu.

 final DynamicLinkParameters parameters = DynamicLinkParameters(
  uriPrefix: 'https://freshakaka.page.link',
  link: Uri.parse('https://freshakaka.page.link/helloworld'),
  androidParameters: AndroidParameters(
    packageName: 'com.freshakaka.flutter',
    minimumVersion: 0,
  ),
  dynamicLinkParametersOptions: DynamicLinkParametersOptions(
    shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short,
  ),
  iosParameters: IosParameters(
    bundleId: 'com.google.FirebaseCppDynamicLinksTestApp.dev',
    minimumVersion: '0',
  ),
);

enter image description here

Comme vous le voyez dans l'image - https://kannadaclub.com/2019/10/17/seltos-50k-bookings/ est mon lien profond. lorsque ce lien est cliqué depuis un mobile, il ouvre toujours le site Web, pas l'application.

3
maaz

Vous devez ajouter ce intent-filter lors de votre première activité d'ouverture dans le manifeste,

<activity Android:name="your default activity">
      
        <intent-filter>
            <action Android:name="Android.intent.action.VIEW" />

            <category Android:name="Android.intent.category.DEFAULT" />
            <category Android:name="Android.intent.category.BROWSABLE" />

            <data
                Android:Host="freshakaka.page.link"
                Android:scheme="https" />
        </intent-filter>

    </activity>

élaborer:

Vous devez rechercher AndroidManifest.xml dans votre projet lorsque vous le découvrez, vous verrez quelque chose comme ça

   <activity
        Android:name=".MainActivity"
        Android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN"/>
            <category Android:name="Android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

Il s'agit de la première activité d'ouverture car elle a le intent-filter qui contient la catégorie LAUNCHER, ce qui signifie que votre application démarrera à partir de cette activité, vous devez donc ajouter le intent-filter que j'avais fourni ci-dessus, comme ceci

       <activity
        Android:name=".MainActivity"
        Android:windowSoftInputMode="adjustResize">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN"/>
            <category Android:name="Android.intent.category.LAUNCHER"/>
        </intent-filter>
        <intent-filter>
            <action Android:name="Android.intent.action.VIEW" />

            <category Android:name="Android.intent.category.DEFAULT" />
            <category Android:name="Android.intent.category.BROWSABLE" />

            <data
                Android:Host="freshakaka.page.link"
                Android:scheme="https" />
        </intent-filter>

    </activity>

Vous pouvez également vérifier cela pour l'explication plus explicite

https://firebase.google.com/docs/dynamic-links/Android/receive

5
haliltprkk