Firebase dynamic link not opening the app

前端 未结 5 1318
自闭症患者
自闭症患者 2020-12-01 10:09

I have developed an android app locally on my device (app not yet on android play store). I have the following logic to get deep link in MainActivity.

Google         


        
相关标签:
5条回答
  • 2020-12-01 10:10

    I had the same problem with deep links not working and the former answers wasn't helping. What did the trick was splitting the "data" tag like this:

    Instead of:

    <data android:host="example.com" android:scheme="http"/>
    <data android:host="example.com" android:scheme="https"/>
    

    Do this:

    <data android:host="example.com"/>
    <data android:scheme="http"/>
    <data android:scheme="https"/>
    

    Hope that will help anyone else :)

    0 讨论(0)
  • 2020-12-01 10:21

    Action View and Action Main both are of different Intent category. So, you need to put them in different blocks like this:

     <activity android:name=".DynamicLinkActivity">
            <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="example.com"
                    android:scheme="http" />
                <data
                    android:host="example.com"
                    android:scheme="https" />
            </intent-filter>
        </activity>
    
    0 讨论(0)
  • 2020-12-01 10:24

    Update January 2019

    Ensure that you have added the SHA256 certificate fingerprint for your app into your project in the Firebase console.

    Add the below code in the AndroidManifest.xml under the activity which you want the dynamic link to lunch:

        <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:host="mydomainname.page.link" android:scheme="http"/>
           <data android:host="mydomainname.page.link" android:scheme="https"/>
       </intent-filter>
    
    • Remove android:autoVerify="true" if you have Android 6.0 (API level 23) and below or the app will crash.
    0 讨论(0)
  • 2020-12-01 10:27

    Alternatively, you could also provide the data in your intent-filter, like stated in the "regular" deep links doc (https://developer.android.com/training/app-indexing/deep-linking.html)

    The intent filter would then look like the following :

            <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="https://XXYYZZ42.app.goo.gl/"  // <- Replace with your deep link from the console
                    android:scheme="https"/>
            </intent-filter>
    

    That said link can be obtained in your console, right here :

    EDIT : Added the picture to show where to find this link

    0 讨论(0)
  • 2020-12-01 10:32

    As explained in another answer, your intent filter seems to have some problems. Also your url may have some problems. When I was playing with those, I had created faulty URL to FireBase web site without noticing it. It is possible to test you code by opening the whole url in your app. I wrote all urls to be tested to an email and sent to myself, open in the device and started clicking. After that you can create the url you want in FireBase. Below are few examples (typos and other errors possible):

    If you clicked this url on your device:

    https://<myapp>.app.goo.gl/?link=https://mysite.fi/112972&apn=com.mydomain.myapp
    

    and had this in you manifest:

     <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="https"
                android:host="mysite.fi"
                android:pathPattern=".*" />
        </intent-filter>
    

    It should open https://mysite.fi/112972 in your app (com.mydomain.myapp) and if you opened the link on your PC, it would open https://mysite.fi/112972 in the browser.

    If you opened this url in your device:

    https://<myapp>.app.goo.gl/?link=https://mysite.fi/112972&apn=com.mydomain.myapp&al=myscheme://mydeeplink/112972&afl=http://fallback.fi
    

    and had this in you manifest:

     <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="myscheme"
                android:host="mydeeplink"
                android:pathPattern=".*" />
        </intent-filter>
    

    It would open myscheme://mydeeplink/112972 in your app (com.mydomain.myapp). You would need to have code for handling it. If the app is not installed, it would open http://fallback.fi in your browser. On the PC it would still open https://mysite.fi/112972.

    (edit 19.3.2018) It seems that Firebase does not fully support 'al=' anymore. The code works, but it is missing from the documentation and Firebase console generated urls.

    0 讨论(0)
提交回复
热议问题