Przeznaczenie
Dynamic Links
jest sposobem na generowanie i przetwarzanie dynamicznych łączy internetowych działających w dowolnie zaprojektowany sposób niezależnie od platformy. W przypadku uruchomienia łącza na urządzeniu z systemem Android
i zainstalowaną aplikacją obsługującą ustalony format Dynamic Links otwierany jest oczekiwany ekran z podaną zawartością. Gdy urządzenie nie posiada wskazanej aplikacji lub usług Play Services
wówczas użytkownik może zostać przekierowany do właściwej strony Play Store
w celu zainstalowania brakującej aplikacji. Jeśli łącze zostanie otworzone w przeglądarce urządzenia bądź komputera nastąpi wyświetlenie strony internetowej. Dynamic Links mogą zostać wykorzystane m.in. w zadaniu konwersji użytkowników z internetowej do mobilnej wersji aplikacji, przeprowadzaniu kampanii marketingowej, wysyłaniu zaproszeń do korzystania z aplikacji czy też dzieleniu treści z innym użytkownikami. Tworzenie łączy może odbywać się z poziomu konsoli Firebase
, ręczne formowanie URL
z parametrami, programowo z kodzie aplikacji przy użyciu Android API
czy REST API
.
Tworzenie
Generowania łącza z poziomu konsoli Firebase pozwala na wybranie niestandardowego linku oraz śledzenia skuteczności co z uwagi na łatwą konfiguracje jest przydatne przede wszystkim w sytuacji tworzenia odnośnika promocyjnego do udostępnienia w mediach społecznościowych. Korzystanie z Dynamic Link Builder API
po stronie kodu aplikacji jest preferowanym sposobem w większości sytuacji, a przede wszystkim w zadaniach udostępniania i przesyłania treści między użytkownikami oraz tam gdzie potrzebne jest wiele linków. Jeśli projekt nie wymaga śledzenia i analizy danych, łącza mogą zostać stworzone także ręcznie przy wykorzystaniu parametrów w adresie URL co pozwala na minimalizacje ruchu sieciowego.
Budowniczy
Aby utworzyć obiekt dynamicznego łącza DynamicLink
przy użyciu API budowniczego należy wywołać metodę createDynamicLink
, dokonać konfiguracji dla wybranych platform i następnie wywołać buildDynamicLink
.
private fun prepareDynamicLink() {
val uri = createUri("PARAM", "value1") //create uri with params
val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(uri)
.setDomainUriPrefix("https://androidcode.page.link")
//set parameters for target platforms like Android, iOS, GoogleAnalytics or provide social media metatags
.setAndroidParameters(DynamicLink.AndroidParameters.Builder("pl.androidcode")
.setMinimumVersion(2) //only for apps with version 2 code
.build())
.setSocialMetaTagParameters(DynamicLink.SocialMetaTagParameters.Builder()
.setTitle("Title")
.setDescription("Description")
.build())
.buildDynamicLink()
val dynamicLinkUri = dynamicLink.uri
//the link could be like below:
//http://androidcode.page.link/?link=http://www.androidcode.pl&apn=pl.androidcode&amv=2&st=title&sd=description
}
private fun createUri(key: String, param: String): Uri {
val builder = Uri.Builder()
builder.scheme("http").authority("androidcode.pl")
.appendQueryParameter(key, param)
return builder.build()
}
Skrócona wersja odnośnika składa się domyślnie 17 znakowego unikalnego sufiksu co wymaga zapytania sieciowego oraz obiektu słuchacza i tworzona jest przy użyciu metody buildShortDynamicLink
.
private fun prepareShortDynamicLink() {
val uri = createUri("PARAM", "value2") //create uri with params
val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(uri)
.setDomainUriPrefix("https://androidcode.page.link")
.setAndroidParameters(DynamicLink.AndroidParameters.Builder("pl.androidcode").build())
.buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT) //pass this arg to get shorten sufix
.addOnSuccessListener { result ->
val shortLink = result.shortLink
val previewLink = result.previewLink
}.addOnFailureListener {
//some action
}
//the link could be like below:
//http://androidcode.page.link/abcd
}
Odbieranie
Aby odebrać i przetworzyć otrzymany DynamicLink
należy dodać w AndroidManifest
poniższy wpis konfiguracyjny intent-filter
do aktywności odpowiedzialnej za przechwytywanie linków (Deep Link
i App Link
), wywołać metodę getDynamicLink
oraz wykonać akcję na podstawie odebranych danych. Należy mieć na uwadzę, że wykonanie metody getDynamicLink
czyści przekazane dane więc jej użycie jest jednorazowe. Ponadto dodanie w AndroidManifest
obsługi Android App Links
umożliwia pominięcie dialogu wyboru aplikacji która ma obsłużyć odnośnik i bezpośrednie skierowanie do wyznaczonej aplikacji (co w przypadku Deep Links
może nie być możliwe).
<!-- autoVerify flags is responsible for handling Dynamic Links using App Links -->
<!-- add filter to MainActivity -->
<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="androidcode.page.link" android:scheme="http"/>
<data android:host="androidcode.page.link" android:scheme="https"/>
</intent-filter>
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
receiveDynamicLink()
}
private fun receiveDynamicLink() {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener(this) { pendingDynamicLinkData ->
// Get deep link from result (may be null if no link is found)
var deepLink: Uri? = null
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.link
//check query parametrs exist and values
val param = deepLink.getQueryParameter("PARAM")
//do something based on params
}
}.addOnFailureListener {
//some action
}
}
}
Indeksowanie aplikacji
App Indexing
jest usługą indeksowania aplikacji
do wyników wyszukiwarki Google
, gdzie wybrane strony witryny internetowej zostają powiązane z treściami zawartymi w aplikacji mobilnej. Dzięki temu zapytania użytkowników mogą być przetworzone w taki sposób, aby bezpośrednio kierować użytkownika do wybranego ekranu w aplikacji, Sklepu Play
lub standardowo do witryny internetowej. Indeksowanie aplikacji ułatwia przyciąganie potencjalnych nowych użytkowników, którzy mogą dowiedzieć się o istnieniu aplikacji z wyników wyszukiwarki, a bieżącym użytkownikom pozwala na zwiększenie jakości odbioru korzystania z aplikacji (User Experience
). Aby indeksować zawartośc aplikacji przez Google należy po stronie witryny dokonać konfiguracji adresów URL
obsługiwanych przez mechanizm Dynamic Links
w aplikacji.