查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

Bir Flutter uygulamasında Firebase Dynamic Links alın

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.

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

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

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

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

  3. Apple Developer sitesinde, uygulamanız için İlişkili Etki Alanı özelliği etkinken bir sağlama profili oluşturun.

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

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

    2. İmzalama ve Yetenekler sayfasında Ekibinizin kayıtlı olduğundan ve Hazırlama 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 (örneği etki alanınızla değiştirin):

      applinks:example.page.link
      
    4. 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.)

    5. Firebase projeniz için özel bir etki alanı ayarladıysanız FirebaseDynamicLinksCustomDomains anahtarını kullanarak Dinamik Bağlantı URL'si ö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'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 ve FirebaseDeepLinkPasteboardRetrievalEnabled anahtarını NO olarak ayarlayın.

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

Feshedilmiş Devlet

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

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

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

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