Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Bir Flutter uygulamasında Firebase Dynamic Links alın

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Oluşturduğunuz Firebase Dynamic Links'i almak için Dynamic Links SDK'sını uygulamanıza eklemeniz ve uygulamanız yüklendiğinde verileri Dynamic Link'te geçirmek için FirebaseDynamicLinks.getDynamicLink() yöntemini çağırmanız gerekir.

  1. Henüz yapmadıysanız , Flutter için Firebase SDK'larını kurun ve başlatın .

  2. Flutter projenizin kök dizininden Dynamic Links eklentisini kurmak için aşağıdaki komutu çalıştırın:

    flutter pub add firebase_dynamic_links
    
  3. 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şturduğ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 yönlendirileceğinden, alan adınızın derin bağlantılarını yakalayan yeni bir amaç filtresi eklemeniz gerekir. Bu, uygulamanızın Play Store'dan yüklendikten/güncellendikten ve Devam düğmesine bir kez basıldıktan 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 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.

Apple platformları

  1. Henüz yoksa bir Apple geliştirici hesabı oluşturun .

  2. 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.

  3. Apple Developer sitesinde, Associated Domain özelliği etkinleştirilmiş olarak uygulamanız için bir ön hazırlık profili oluşturun.

  4. Xcode'da aşağıdakileri yapın:

    1. HEDEFLER başlığı altında uygulamanızı açın.

    2. İmzalama ve Yetenekler sayfasında, Ekibinizin kayıtlı olduğundan ve Temel Hazırlık Profilinizin ayarlandığından emin olun.

    3. İmzalama ve Yetenekler sayfasında, İlişkili Etki Alanlarını etkinleştirin ve aşağıdakileri İlişkili Etki Alanları listesine ekleyin:

      applinks:example.page.link
      
    4. Bilgi sayfasında projenize bir URL Türü 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.)

    5. Firebase projeniz için özel bir etki alanı ayarladıysanız, FirebaseDynamicLinksCustomDomains anahtarını kullanarak Dynamic Link URL önekini iOS projenizin Info.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>
      
    6. İsteğe bağlı: Dynamic Links SDK'sının iOS çalışma alanını kullanmasını devre dışı bırakın.

      Varsayılan olarak, Dinamik Bağlantılar SDK'sı, 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 uygulamanızı yüklemesi gerektiğinde, kurulumdan sonra uygulamayı ilk kez açarken kullanıcının hemen orijinal bağlantılı içeriğe gidebilmesini sağlayabilir.

      Bunun dezavantajı, çalışma alanının kullanılmasının iOS 14 ve sonraki sürümlerde 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örürler ve bu da kafa karışıklığına neden olabilir.

      Bu davranışı devre dışı bırakmak için, Xcode projenizin Info.plist dosyasını düzenleyin ve FirebaseDeepLinkPasteboardRetrievalEnabled anahtarını NO olarak ayarlayın.

Uygulamanızda bir Dinamik Bağlantıyı işlemek için iki senaryonun uygulanması gerekir.

Sonlandırılmış Durum

Uygulama sonlandırılırsa, FirebaseDynamicLinks.getInitialLink yöntemi, uygulamayı açan Dinamik Bağlantıyı almanıza olanak tanır.

Bu eşzamansız bir istektir, bu nedenle bir gezgin gibi uygulama mantığını oluşturmadan önce bir bağlantıyı işlemek mantıklıdır. Örneğin, bunu main işlevde halledebilirsiniz:

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);

  // Get any initial links
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();

  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);
}

Alternatif olarak, uygulamayı açmak için tam bir Dinamik Bağlantı kullanılıp kullanılmadığını belirlemek istiyorsanız, bunun yerine onu getDynamicLink yöntemine iletin:

String link = 'https://dynamic-link-domain/ke2Qa';

final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));

Arka Plan / Ön Plan Durumu

Uygulama açıkken veya arka plandayken, bir akış işleyicisi kullanarak Dynamic Links olaylarını dinleyebilirsiniz. FirebaseDynamicLinks.onLink alıcısı, PendingDynamicLinkData içeren bir Stream döndürür:

FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
  Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
  // Handle errors
});