Oluşturduğunuz Firebase Dynamic Links'i almak için uygulamanıza Dynamic Links SDK'sını eklemeniz ve uygulamanız yüklendiğinde FirebaseDynamicLinks.getDynamicLink()
yöntemini çağırarak Dynamic Link'te iletilen verileri almanız gerekir.
Firebase ve Dynamic Links SDK'sını ayarlar
Henüz yapmadıysanız Flutter için Firebase SDK'larını yükleyin ve başlatın.
Dynamic Links eklentisini yüklemek için Flutter projenizin kök dizininden aşağıdaki komutu çalıştırın:
flutter pub add firebase_dynamic_links
Android uygulaması geliştiriyorsanı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şturduğunuz platformlar için aşağıdaki platform entegrasyonu adımlarını tamamlayın.
Android
Android'de, uygulamanız yüklüyse dinamik bağlantı alanınıza yönlendireceğinden alanınızın derin bağlantılarını yakalayan yeni bir intent filtresi eklemeniz gerekir. Bu, uygulamanızın Play Store'dan yüklenip/güncellendikten sonra Dinamik Bağlantı verilerini alması ve kullanıcıların Devam düğmesine dokunması için gereklidir. AndroidManifest.xml
içinde:
<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 makineye derin bağlantı içeren bir Dinamik Bağlantı açtığında uygulamanız, bağlantıyı işlemek için etkinliği bu amaç filtresiyle başlatır.
Bir sonraki adım, imzalama sertifikasının SHA-256 parmak izinin Firebase Console'da uygulama için kaydedildiğinden emin olmaktır. SHA-256 parmak izinizi nasıl alacağınızla ilgili daha fazla bilgiyi İstemcinizin Kimliğini Doğrulama sayfasında bulabilirsiniz.
Apple platformları
Henüz bir hesabınız yoksa Apple geliştirici hesabı oluşturun.
Firebase konsolunun Proje ayarları sayfasında iOS uygulamanızın App Store kimliğiniz ve ekip kimliğinizle doğru şekilde yapılandırıldığından emin olun.
Apple Developer sitesinde, İlişkili Alan Adı özelliği etkinleştirilmiş olarak uygulamanız için bir sağlama profili oluşturun.
Xcode'da şunları yapın:
HEDEFLER başlığı altında uygulamanızı açın.
İmzalama ve Özellikler sayfasında, ekibinizin kayıtlı olduğundan ve sağlama profilinizin ayarlandığından emin olun.
İmzalama ve Özellikler sayfasında İlişkili Alanlar'ı etkinleştirin ve İlişkili Alanlar listesine aşağıdakileri ekleyin (örnek yerine alan adınızı kullanın):
applinks:example.page.link
Bilgi sayfasında projenize bir URL türü ekleyin. URL Şemaları alanını uygulamanızın paket kimliği olarak ayarlayın. (Tanımlayıcı
Bundle ID
veya istediğiniz herhangi bir şey olabilir.)Firebase projeniz için özel bir alan adı ayarladıysanız
Info.plist
anahtarını kullanarak iOS projenizinInfo.plist
dosyasına Dinamik Bağlantı URL ön ekini ekleyin.FirebaseDynamicLinksCustomDomains
<?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 yapıştırma panosunu kullanmasını devre dışı bırakın.
Varsayılan olarak, Dynamic Links SDK'sı yükleme sonrası derin bağlantıların güvenilirliğini artırmak için pano kullanır. Dinamik Bağlantılar, pano kullanarak bir kullanıcının dinamik bağlantıyı açtığında ancak önce uygulamanızı yüklemesi gerektiğinde, yüklemeden sonra uygulamayı ilk kez açtığında doğrudan orijinal bağlantılı içeriğe gidebilmesini sağlayabilir.
Bunun dezavantajı, pano kullanımının iOS 14 ve sonraki sürümlerde bildirime neden olmasıdır. Bu nedenle, kullanıcılar uygulamanızı ilk kez açtığında ve pano bir dinamik bağlantı URL'si içeriyorsa uygulamanızın panoya eriştiğini belirten bir bildirim görürler. Bu durum kafa karışıklığına 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ı işleme
Uygulamanızda bir Dinamik Bağlantı işlemek için iki senaryonun uygulanması gerekir.
Sonlandırılmış Durum
Aşağıdaki yöntemleri ayarlayın:
FirebaseDynamicLinks.getInitialLink
-Future<PendingDynamicLinkData?>
değerini döndürürFirebaseDynamicLinks.onLink
-PendingDynamicLinkData?
içeren birStream
döndüren etkinlik işleyici
Android, bağlantıyı her zaman FirebaseDynamicLinks.getInitialLink
üzerinden sonlandırılmış bir durumdan alır ancak iOS'te bu garanti edilmez. Bu nedenle, uygulamanızın bağlantıyı almasını sağlamak için her ikisini de aşağıdaki sırayla ayarlamanız önerilir:
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, bağlantının işlenip işlenmediğini kontrol edebilir ve bir işlem 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 çalışırken FirebaseDynamicLinks.onLink
getter'ı 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 istiyorsanız bağlantıyı bunun yerine getDynamicLink
yöntemine iletin:
String link = 'https://dynamic-link-domain/ke2Qa';
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));
iOS Platformunda Dinamik Bağlantı Test Etme
iOS'te bir dinamik bağlantıyı test etmek için gerçek bir cihaz kullanmanız gerekir. Sonlandırılmış bir uygulama durumundan (ör. uygulama kapatılmak için kaydırılmıştır) dinamik bağlantı testi yapıyorsanız uygulamayı yayın modunda (ör. flutter run --release
) da çalıştırmanız gerekir.