Flutter uygulamasında Firebase Dynamic Links alma

Oluşturduğunuz Firebase Dynamic Links'i almak için uygulamanıza Dynamic Links SDK'sını dahil etmeniz ve FirebaseDynamicLinks.getDynamicLink() yöntemini kullanarak uygulamanız Dinamik Bağlantı'da iletilen verileri alın.

  1. Aşağıdaki şartları karşılıyorsanız Flutter için Firebase SDK'larını yükleyip başlatın bunu yapmıyoruz.

  2. Flutter projenizin kök dizininden aşağıdaki komutu çalıştırın: komutunu çalıştırın:

    flutter pub add firebase_dynamic_links
    
  3. Android uygulaması oluşturuyorsanız Proje ayarları'nı açın sayfasını açın ve SHA-1'inizi belirttiğinizden emin olun imzalayın. App Links kullanıyorsanız SHA-256 anahtarınızı da belirtin.

Platform entegrasyonu

Kaydolduğunuz platformlar için aşağıdaki platform entegrasyonu adımlarını tamamlayın pek çok yolu vardır.

Android

Android'de, alanınızın derin bağlantılarını yakalayan yeni bir intent filtresi eklemeniz gerekir. Dinamik Bağlantı, uygulamanız yüklüyse alan adınıza yönlendirir. Bu, uygulamanızın şunları yapması için gereklidir: Dinamik Bağlantı verilerini Play Store'dan yüklendikten/güncellendikten sonra ve Devam düğmesi. AndroidManifest.xml ürününde:

<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 şema ve ana makineye derin bağlantı içeren bir dinamik bağlantıyı açtığında uygulamanız Bağlantıyı işlemek için bu intent filtresiyle etkinliği başlatın.

Bir sonraki adım, imza sertifikasının SHA-256 parmak izinin Firebase konsoluna kayıtlı olduğundan emin olmaktır. görebilirsiniz. SHA-256 parmak izinizi nasıl alacağınız hakkında daha fazla bilgiyi İstemcinizin Kimliklerini Doğrulama sayfası.

Apple platformları

  1. Apple geliştirici hesabı oluşturma zaten bir hesabınız yoksa.

  2. Proje ayarları sayfasında sayfasını kontrol edin, iOS uygulamanızın doğru olduğundan emin olun. App Store Kimliğiniz ve Ekip Kimliğiniz ile yapılandırılmıştır.

  3. Apple Geliştirici sitesinde, uygulamanız için bir temel hazırlık profili oluşturun (İlişkili Alan Adı özelliği etkin olmalıdır.)

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

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

    2. İmzalama ve Özellikler sayfasını açın, Ekibinizin kayıtlı olduğundan emin olun ve Temel Hazırlık Profiliniz ayarlı.

    3. İmzalama ve Özellikler sayfasında İlişkili Alanlar'ı etkinleştirin ve Aşağıdakini İlişkili Alanlar listesine ekleyin (örneği kendi alan adınızla değiştirin):

      applinks:example.page.link
      
    4. Bilgi sayfasında projenize bir URL Türü ekleyin. URL Şemalarını Ayarlama alanını uygulamanızın paket kimliğine ekleyin. (Tanımlayıcı, Bundle ID veya istediğiniz gibi yapabilirsiniz.)

    5. Firebase projeniz için özel alan oluşturduysanız iOS projenizin Info.plist dosyasına Dinamik Bağlantı URL'si ön eki (FirebaseDynamicLinksCustomDomains tuşunu kullanın)

      <?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 yapıştırma panosu kullanımını devre dışı bırakın.

      Varsayılan olarak Dynamic Links SDK'sı, güvenilirliğini artırır. Pastel, Dinamik Bağlantılar, bir kullanıcı bir Dinamik Bağlantı açtığında ancak önce uygulamanızı yükledikten sonra, kullanıcı hemen orijinal daha sonra uygulamayı ilk kez açarken bağlantı verilen içerikler teşekkür ederiz.

      Bunun olumsuz tarafı, yapıştırma panosunun kullanılması bir öğeyi bildirimi görebilirsiniz. Kullanıcılar sayfanızı ilk açtıklarında uygulamasını kullanıyorsanız, yapıştırma panosu bir Dinamik Bağlantı URL'si içeriyorsa, uygulamanızın yapıştırma panosuna eriştiğini, bunun da zihin bulanıklığı.

      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ızdaki bir Dinamik Bağlantı'yı işlemek için iki senaryo uygulanması gerekir.

Feshedilmiş Durum

Aşağıdaki yöntemleri ayarlayın:

  1. FirebaseDynamicLinks.getInitialLink - Future<PendingDynamicLinkData?> döndürür
  2. FirebaseDynamicLinks.onLink - PendingDynamicLinkData? içeren bir Stream döndüren etkinlik işleyici

Android, kapatılmış bir durumda her zaman FirebaseDynamicLinks.getInitialLink aracılığıyla bağlantıyı alır. ancak iOS'te bu garanti edilmez. Bu nedenle, her ikisini de aşağıdaki sırayla ayarlamanız gerekir: uygulamanızın bağlantıyı aldığından emin olmak için:

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 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 şunu kullanın: FirebaseDynamicLinks.onLink alıcı:

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

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

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

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

iOS'te bir dinamik bağlantıyı test etmek için gerçek bir cihaz kullanmanız gerekir. Ayrıca uygulamayı sürüm modunda (ör. flutter run --release) çalıştırmanız gerekir. Sonlandırılan bir uygulama durumundaki dinamik bağlantı test ediliyorsa (ör. uygulama kapatıldıysa).