2017-03-23 14 views
5

Mam wiele schematów deeplink dla różnych smaków aplikacji. Mam backend, który wysyła inny schemat na aplikację. Jeśli wszystkie są zainstalowane na tym samym urządzeniu, wszystkie będą w stanie przeanalizować wysłany link deeplink. Tak więc, gdy wszystkie trzy są zainstalowane i wywoływany jest deeplink dla app2. Wszystkie aplikacje są w stanie go przechwycić, ale tylko aplikacja 2 może poprawnie przetworzyć go w aplikacji i powinna być jedyną, która może go złapać.Głębokie łącze Android na jeden smak

Flavors zdefiniowane w moim .gradle pliku

productFlavors { 
    app1{ 
     applicationId "com.apps.app1" 
    } 
    app2{ 
     applicationId "com.apps.app2" 
    } 
    app3{ 
     applicationId "com.apps.app3" 
    } 
} 

Intencją filtr używam do połowu deeplinks w moim manifestu.

<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:pathPrefix="/" 
     android:scheme="app1" /> 
    <data 
     android:pathPrefix="/" 
     android:scheme="app2" /> 
    <data 
     android:pathPrefix="/" 
     android:scheme="app3" /> 
</intent-filter> 

Czy istnieje sposób, aby Deeplink tylko złapać-stanie za jednym smaku?

+3

Można również podać zasób ciągów dla 'android: scheme =" @ string/scheme "' i nadpisać go dla każdego smaku, lub podobnie, używając manifestów zastępczych takich jak '$ {schemat}' konfigurowalnych z gradle. –

Odpowiedz

1

Musisz podać każdemu produktowi swój własny plik manifestu, w ramach którego można określić wyraźny wzór URI dla głębokich linków.

Szczegóły można znaleźć pod numerami Configure Build Variants i Merge Multiple Manifest Files, a także na temat budowania aplikacji pod kątem smaku produktu.

Powiązane problemy