Problem With Linking.getInitialURL()

I’m using ExpoKit
When I open the app from http://ecocard.app, the app open end…

If app is Closed on Android

await Linking.getInitialURL() // --> 'ecocard://'

If app is Open on Android

await Linking.getInitialURL() // --> 'ecocard://'
Linking.addEventListener('url', ({url}) => console.log('Event', url) }) // --> 'http://ecocard.app'

If app is Open by Link when is Closed on Ios

await Linking.getInitialURL() // --> 'http://ecocard.app'

If app is Open by Link after Open By Icon on Ios

await Linking.getInitialURL() // --> 'ecocard://'
Linking.addEventListener('url', ({url}) => console.log('Event', url) }) // Never Triggered

AndroidManifest.xml

...
<data android:scheme="ecocard"/>
<data android:scheme="http" android:host="ecocard.app" />
<data android:scheme="https" android:host="ecocard.app" />
...

app.json

...
  "expo": {
    "sdkVersion": "28.0.0",
    "name": "Ecocard",
    "description": "Seja digital! Troque cartões de visitas com o Ecocard!",
    "slug": "ecocard",
    "icon": "./assets/img/icon-android.png",
    "privacy": "unlisted",
    "version": "2.4.1-dev-0.2",
    "platforms": [
      "ios",
      "android"
    ],
    "assetBundlePatterns": [
      "assets/fonts/*",
      "assets/img/*"
    ],
    ...
    "scheme": "ecocard",
...

I try the same using ecocard:// scheme and The Same Behavior

On Expo Client using exp:// all works fine.

How can i make this works with http, https scheme?

What i’m missing??

Hi @victorwads. Thanks for the report. Could you verify that the correct behaviors that you were expecting are:

If app is closed

await Linking.getInitialURL() // --> 'http://ecocard.app'

If app is open

await Linking.getInitialURL() // --> 'ecocard://'
Linking.addEventListener('url', ({url}) => console.log('Event', url) }) // --> 'http://ecocard.app'

?

@esamelson, i solve it. Thank U for your help.

Ios

On Ios I remove one library - react-native-firebase-dynamic-links

Android

The issue is cause cause the on AndroidManifest.xml are on the wrong activity.

Before

    <activity
        android:name=".LauncherActivity" ...>
      <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:scheme="http" />
        <data android:scheme="https" />
        <data android:scheme="ecocard"/>
        <data android:host="ecocard.app" />
      </intent-filter>
    </activity>

After

    <activity
        android:name=".MainActivity" ...>
      <!-- START HOME INTENT FILTERS -->
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <category android:name="android.intent.category.LAUNCHER"/>
        <data android:scheme="http" />
        <data android:scheme="https" />
        <data android:scheme="ecocard"/>
        <data android:host="ecocard.app" />
      </intent-filter>
      <!-- END HOME INTENT FILTERS -->
    </activity>
1 Like

@victorwads - glad you figured it out, thanks for letting us know!

1 Like

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.