Oluşturduğunuz Firebase Dynamic Links'i almak için Dynamic Links SDK'yı uygulamanıza dahil etmeniz ve uygulamanız yüklendiğinde Dynamic Link'te aktarılan verileri almak için FirebaseDynamicLinks.getDynamicLink()
yöntemini çağırmanız gerekir.
Firebase ve Dinamik Bağlantılar SDK'sını kurun
Henüz yapmadıysanız Flutter için Firebase SDK'larını kurun ve başlatın .
Dinamik Bağlantılar eklentisini yüklemek için Flutter projenizin kök dizininden aşağıdaki komutu çalıştırın:
flutter pub add firebase_dynamic_links
Bir Android uygulaması oluşturuyorsanız Firebase konsolunun Proje ayarları sayfasını açın ve SHA-1 imzalama anahtarınızı belirttiğinizden emin olun. Uygulama Bağlantıları kullanıyorsanız SHA-256 anahtarınızı da belirtin.
Platform entegrasyonu
Uygulamanızı oluşturmakta olduğunuz platformlar için aşağıdaki platform entegrasyon adımlarını tamamlayın.
Android
Android'de, uygulamanız yüklüyse Dinamik Bağlantı alanınıza yeniden yönlendireceğinden, alanınızın derin bağlantılarını yakalayan yeni bir amaç filtresi eklemelisiniz. Bu, uygulamanızın Play Store'dan yüklendikten/güncellendikten ve Devam düğmesine bir kez dokunulduktan sonra Dinamik Bağlantı verilerini alması için gereklidir. AndroidManifest.xml
:
<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="https"/>
</intent-filter>
Kullanıcılar belirttiğiniz şemaya ve ana bilgisayara derin bir bağlantı içeren bir Dinamik Bağlantı açtığında, uygulamanız bağlantıyı işlemek için bu amaç filtresiyle etkinliği başlatır.
Sonraki adım, imzalama sertifikasının SHA-256 parmak izinin uygulama için Firebase konsolunda kaydedildiğinden emin olmaktır. SHA-256 parmak izinizi nasıl alacağınızla ilgili daha fazla bilgiyi Müşterinizin Kimlik Doğrulaması sayfasında bulabilirsiniz.
elma platformları
Firebase konsolunun Proje ayarları sayfasında, iOS uygulamanızın App Store Kimliğiniz ve Ekip Kimliğiniz ile doğru şekilde yapılandırıldığından emin olun.
Apple Developer sitesinde, uygulamanız için İlişkili Etki Alanı özelliği etkinken bir sağlama profili oluşturun.
Xcode'da aşağıdakileri yapın:
Uygulamanızı HEDEFLER başlığı altında açın.
İmzalama ve Yetenekler sayfasında Ekibinizin kayıtlı olduğundan ve Hazırlama Profilinizin ayarlandığından emin olun.
İmzalama ve Yetenekler sayfasında, İlişkili Etki Alanlarını etkinleştirin ve aşağıdakileri İlişkili Etki Alanları listesine ekleyin (örneği etki alanınızla değiştirin):
applinks:example.page.link
Bilgi sayfasında, projenize bir URL Tipi ekleyin. URL Şemaları alanını uygulamanızın paket kimliğine ayarlayın. (Tanımlayıcı,
Bundle ID
veya istediğiniz herhangi bir şey olabilir.)Firebase projeniz için özel bir etki alanı ayarladıysanız
FirebaseDynamicLinksCustomDomains
anahtarını kullanarak Dinamik Bağlantı URL'si önekini iOS projenizinInfo.plist
dosyasına ekleyin.<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>FirebaseDynamicLinksCustomDomains</key> <array> <string>https://custom.domain.io/path1</string> <string>https://custom.domain.io/path2</string> </array> ...other settings </dict> </plist>
İsteğe bağlı: Dynamic Links SDK'nın iOS çalışma alanını kullanmasını devre dışı bırakın.
Varsayılan olarak Dynamic Links SDK, yükleme sonrası derin bağlantıların güvenilirliğini artırmak için çalışma alanını kullanır. Dinamik Bağlantılar çalışma alanını kullanarak, bir kullanıcı bir Dinamik Bağlantı açtığında ancak önce uygulamanızı yüklemesi gerektiğinde, kullanıcının uygulamayı kurulumdan sonra ilk kez açarken hemen orijinal bağlantılı içeriğe gidebilmesini sağlayabilir.
Bunun dezavantajı, çalışma alanı kullanımının iOS 14 ve sonrasında bir bildirimi tetiklemesidir. Bu nedenle, kullanıcılar uygulamanızı ilk kez açtıklarında, çalışma alanı bir Dinamik Bağlantı URL'si içeriyorsa, uygulamanızın çalışma alanına eriştiğine dair bir bildirim görecek ve bu da karışıklığa neden olabilir.
Bu davranışı devre dışı bırakmak için, Xcode projenizin
Info.plist
dosyasını düzenleyin veFirebaseDeepLinkPasteboardRetrievalEnabled
anahtarınıNO
olarak ayarlayın.
Derin bağlantıları yönet
Uygulamanızda bir Dinamik Bağlantıyı işlemek için iki senaryonun uygulanması gerekir.
Feshedilmiş Devlet
Aşağıdaki yöntemleri ayarlayın:
-
FirebaseDynamicLinks.getInitialLink
- birFuture<PendingDynamicLinkData?>
döndürür. -
FirebaseDynamicLinks.onLink
- PendingDynamicLinkData içeren birStream
döndüren olay işleyicisiPendingDynamicLinkData?
Android, bağlantıyı her zaman FirebaseDynamicLinks.getInitialLink
aracılığıyla sonlandırılmış bir durumdan alır, ancak iOS'ta bu garanti edilmez. Bu nedenle, uygulamanızın bağlantıyı aldığından emin olmak için her ikisini de aşağıdaki sırayla ayarlamaya değer:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);
// Check if you received the link via `getInitialLink` first
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
if (initialLink != null) {
final Uri deepLink = initialLink.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
FirebaseDynamicLinks.instance.onLink.listen(
(pendingDynamicLinkData) {
// Set up the `onLink` event listener next as it may be received here
if (pendingDynamicLinkData != null) {
final Uri deepLink = pendingDynamicLinkData.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
},
);
runApp(MyApp(initialLink));
}
Uygulama mantığınızda, bir bağlantının işlenip işlenmediğini kontrol edebilir ve bir eylem gerçekleştirebilirsiniz, örneğin:
if (initialLink != null) {
final Uri deepLink = initialLink.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
Arka Plan / Ön Plan Durumu
Uygulama açıkken veya arka planda FirebaseDynamicLinks.onLink
alıcısını kullanın:
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
// Handle errors
});
Alternatif olarak, uygulamayı açmak için tam bir Dinamik Bağlantı kullanılıp kullanılmadığını belirlemek isterseniz, bunun yerine getDynamicLink
yöntemine iletin:
String link = 'https://dynamic-link-domain/ke2Qa';
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));
Dinamik Bağlantıyı iOS Platformunda Test Etme
iOS'ta dinamik bir bağlantıyı test etmek için gerçek bir cihaz kullanmanız gerekir. Sonlandırılmış (yani uygulama kaydırılarak kapatılmış) bir uygulama durumundan dinamik bir bağlantı test ediliyorsa, uygulamayı yayın modunda da çalıştırmanız gerekir (yani flutter run --release
.).