Firebase Dynamic Links је Гугл сервис за креирање паметних линкова који упућују корисника на право место у апликацији без обзира на то да ли је апликација инсталирана или не. Према Firebase Documentation, Dynamic Links аутоматски преусмеравају корисника у App Store или Google Play кад апликација није инсталирана и враћају контекст преласка након инсталације. Smart-линкови Firebase-а решавају проблем URL Scheme, који не ради са неинсталираним апликацијама.
Главно
Firebase Dynamic Links је облачки сервис од Гугла који креира јединствене универзалне линкове за мобилне апликације на iOS-у и Android-у. Динамички линк садржи дубоки линк ка садржају унутар апликације, али се понаша као обичан HTTPS линк: ако је апликација инсталирана, отвара је директно, ако није — преусмерава у продавницу апликација.
За разлику од обичних URL Scheme, Dynamic Links могу да раде са неинсталираним апликацијама захваљујући технологији deferred deep link. Када корисник инсталира апликацију након преласка путем линка, Firebase чува параметре преласка и проследује их при првом покретању. Ово отвара могућности за рефералне програме, маркетиншке кампање и позивнице.
URL Scheme захтевају инсталирану апликацију и немају стандардни механизам заузувања. Firebase Dynamic Links решавају овај проблем путем посредног Гугл веб сервиса који одређује статус инсталације апликације на уређају и корисника правилно усмерава. Један линк ради исто на обе платформе.
Firebase Dynamic Link користи домен облика yourcode.page.link, који се региструје у Firebase Console. Када корисник пређе путем таквог линка, Firebase одређује тип уређаја и статус инсталације апликације. За iOS се користи механизам Universal Links, за Android — App Links са аутоматском верификацијом путем Digital Asset Links.
Процес обраде укључује неколико узастопних фаза: при преласку путем линка, прегледач шаље GET захтев ка Firebase серверу, сервер одређује платформу и проверава присуство апликације на уређају. Ако је апликација инсталирана — генерише се преусмеравање на Universal Link или Intent са параметрима за отварање циљног екрана. Ако апликација није инсталирана — преусмеравање у App Store или Google Play ради преузимања.
Апликација прима линк у фази иницијализације Firebase SDK-а. Метода getDynamicLink() враћа PendingResult са подацима о преласку. Након успешног пријема, из линка се извлаче параметри deep link-а, UTM ознаке за аналитику и произвољни подаци прослеђени при креирању линка.
Firebase Console пружа визуелни интерфејс за креирање Dynamic Links. Развојач наводи дубоки линк (deep link URL), назив кампање, подешавања за iOS и Android одвојено, као и параметре аналитике. Након креирања, Firebase генерише кратак линк облика https://yourcode.page.link/abc123, који се може користити у рекламним материјалима, имејл кампањама и друштвеним мрежама.
За програмско креирање Dynamic Links користи се Firebase REST API или клијентски SDK. REST API омогућава масовно генерисање линкова за маркетиншке кампање са прилагођеним параметрима, укључујући линк за друштвене мреже и асинхрону аналитику прелазака. При креирању линкова путем API-ја, важно је правилно навести параметре socialMetaTagInfo — они одређују како се линк приказује при преношењу у месенџерима и друштвеним мрежама са картицом за преглед.
| Параметар | Намена | Обавезност |
|---|---|---|
| Deep Link URL | Унутрашњи линк ка садржају апликације | Да |
| iOS Bundle ID | Идентификатор апликације у App Store-у | За iOS |
| Android Package Name | Назив пакета у Google Play-у | За Android |
| Fallback URL | Веб страница кад апликација није присутна | Не |
| UTM ознаке | Параметри за Google Analytics | Не |
За рад са Firebase Dynamic Links на iOS-у потребно је повезати Firebase SDK путем CocoaPods или Swift Package Manager-а, конфигурисати Info.plist са GOOGLE_APP_ID и регистровати домен Dynamic Links у Associated Domains пројекта. Након тога, апликација аутоматски обрађује Universal Links које је генерисао Firebase.
У Xcode-у је потребно додати capability Associated Domains са уносом облика applinks:yourcode.page.link. Firebase SDK користи методу application(_:continue:restorationHandler:) за обраду Universal Links, па није потребна додатна интеграција са AppDelegate-ом — Firebase аутоматски извлачи параметре Dynamic Link-а из User Activity.
Примјер конфигурације Info.plist-а за правилну иницијализацију Firebase-а и регистрацију handler-а за Dynamic Links. Кључ FIROptions треба да садржи идентификатор пројекта GoogleService-Info.plist.
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://yourcode.page.link</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
Ако је AppDelegate прокси искључен, потребно је ручно позвати методу handleUniversalLink(_:) и проследити User Activity из continue NSUserActivity. Firebase SDK аутоматски извлачи параметре линка и враћа DynamicLink путем completion handler-а.
На Android-у, интеграција Firebase Dynamic Links почиње додавањем зависности у build.gradle и датотеке google-services.json из Firebase Console-а. Домен Dynamic Links се региструје у Firebase Console-у, након чега сви линкови са овим доменом аутоматски бивају препознати од стране Android апликације путем Intent Filter-а са акцијом VIEW. За правилан рад, потребно је додати и Google Services плагин у коренски и модулни build.gradle и извршити Gradle синхронизацију.
За правилну обраду линкова на Android-у, потребно је додати Intent Filter за домен Dynamic Links у Activity која треба да прима долазеће линкове. Филтер треба да садржи шему https, хост вашег домена Dynamic Links и подразумевану путању.
Примјер Intent Filter-а у AndroidManifest.xml-у за пријем Dynamic Links на домену yourcode.page.link.
<activity android:name=".MainActivity"
android:launchMode="singleTask">
<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:scheme="https"
android:host="yourcode.page.link" />
</intent-filter>
</activity>
Важно је поставити launchMode на singleTask за Activity која прима Dynamic Links. Ово спречава стварање нове инстанце Activity при поновном преласку путем линка и омогућава правилну обраду свих долазећих deep link-ова у једној инстанци.
Firebase SDK за Android пружа методу FirebaseDynamicLinks.getInstance().getDynamicLink(intent), која враћа PendingTask објекат са подацима о линку. Из DynamicLink објекта се извлачи дубоки URI, UTM параметри и временски жиг преласка. Обраду је препоручљиво вршити у методама onCreate() и onNewIntent() Activity-је.
При обради је важно узети у обзир да Dynamic Link може бити примљен како при покретању апликације из хладног стања (cold start), тако и при преласку из друге апликације у већ покренуту апликацију. За други случај, потребно је прегазити onNewIntent() и поново позвати проверу Dynamic Link-а.
Примјер пријема и обраде Firebase Dynamic Link-а у MainActivity-ји. Код обрађује како cold start, тако и прелазак из друге апликације.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDynamicLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
checkDynamicLink(intent)
}
private fun checkDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deepLink = link?.link.toString()
handleDeepLink(deepLink)
}
}
}
Метода addOnSuccessListener враћа DynamicLink из којег се извлачи циљни линк путем link?.link. Ако listener врати null, значи да Intent не садржи Dynamic Link — ово је нормално покретање апликације без долазећег линка. Такође су доступне UTM ознаке за аналитику прелазака, укључујући campaign, medium, source и content, који се могу проследити у Google Analytics ради детаљне процене ефикасности сваког маркетиншког канала.
Често постављана питања
Firebase Dynamic Links подржава deferred deep link — линк чува контекст чак и када апликација није инсталирана. Након инсталације, апликација добија све параметре преласка, што је немогуће са обичним URL Scheme или Universal Links-ома.
Firebase Dynamic Links улазе у бесплатни тарифни план Firebase Spark. Нема ограничења на број креираних линкова. Међутим, од 2024. године Гугл је најавио прелазак на нову инфраструктуру, па се услови могу промијенити.
Dynamic Links су намењени за мобилне апликације. При преласку из веб прегледача на десктоп рачунару, линк ће отворити fallback URL. За веб апликације користите обичне линкове или сопствену логику преусмеравања.
Firebase Console пружа дугме Test Dynamic Link за преглед понашања. Такође можете користити Android емулатор или iOS симулатор са инсталираним Firebase SDK-ом за локално тестирање свих сценарија преласка.
Кратак линк Firebase Dynamic Link састоји се од домена page.link и случајног суфикса дужине око 7 знакова. Укупна дужина је око 30 знакова. Deep link унутар може бити било које дужине, али се препоручује да се ограничи на 2 КБ ради компатибилности.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође