Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Kullanıcıların uygulamanızın içeriğini paylaşmasını sağlayarak uygulamanız için yeni kullanıcılar edinin

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

Yeni kullanıcıların uygulamanızı yüklemesini sağlamanın en etkili yollarından biri, kullanıcılarınızın uygulamanızdaki içeriği arkadaşlarıyla paylaşmasına olanak tanımaktır. Dynamic Links ile harika bir kullanıcıdan kullanıcıya paylaşım deneyimi yaratabilirsiniz: Arkadaşlarından içerik önerileri alan kullanıcılar bir bağlantıya tıklayabilir ve Uygulamaya gitmeleri gerekse bile doğrudan uygulamanızdaki paylaşılan içeriğe yönlendirilebilirler. Önce uygulamanızı yüklemek için Store veya Google Play Store.

Kullanıcı yönlendirmelerinin yapışkanlığını ve Dynamic Links'in kalıcılığını birleştirerek, yeni kullanıcıları doğrudan uygulamanızın içeriğine çekerek veya yönlendiren ve yönlendirilenlere karşılıklı yarar sağlayan promosyonlar sunarak kullanıcıdan kullanıcıya paylaşım ve yönlendirme özellikleri oluşturabilirsiniz. .

Temel faydalar

  • Uygulamanızı ilk kez açan yeni kullanıcılar, arkadaşlarının onlarla paylaşmak istediklerine göre bağlamsallaştırılmış, özelleştirilmiş bir ilk çalıştırma deneyimi elde eder. Örneğin, onlarla paylaşılan içeriği görüntüleyebilir veya onları davet eden arkadaşınıza otomatik olarak bağlayabilirsiniz.
  • Kullanıcıların, uygulamanız yüklü olsun ya da olmasın, kullanıcıların platformlar arasında arkadaşlarıyla içerik paylaşmasını kolaylaştırır.

İşte nasıl başlayacağınız!

Yeni bir Firebase projesi oluşturun ve Dynamic Links SDK'sını uygulamanıza yükleyin.

Dynamic Links SDK'sının yüklenmesi, Firebase'in, kullanıcı uygulamayı yükledikten sonra da dahil olmak üzere, Dynamic Link hakkındaki verileri uygulamaya geçirmesine olanak tanır.

Şimdi sıra, kullanıcıların arkadaşlarına gönderebilecekleri bağlantıları kurmada. Kullanıcılarınızın arkadaşları uygulamayı henüz yüklemediyse endişelenmeyin; Dinamik Bağlantılar bunu sizin için halledebilir.

Paylaşılabilir olmasını istediğiniz her içerik öğesi için bir Dinamik Bağlantı oluşturun .

Dinamik Bağlantı oluşturduğunuzda, paylaştığınız içeriği tanımlamak için kullanılacak link parametresi olarak bir HTTP veya HTTPS URL'si sağlamanız gerekir. Eşdeğer içeriğe sahip bir web siteniz varsa, web sitenizin URL'lerini kullanmalısınız. Bu, bu bağlantıların, örneğin bir masaüstü tarayıcısı gibi Dinamik Bağlantıları desteklemeyen bir platformda doğru bir şekilde oluşturulmasını sağlayacaktır. Örneğin:

https://example.page.link/?link=https://www.example.com/content?item%3D1234&apn=com.example.android&ibi=com.example.ios&isi=12345

URL kodlu parametreler ekleyerek veri yüküne ek bilgiler de ekleyebilirsiniz; örneğin, bağlantının bir oyun davetiyesinde olduğu gibi belirli bir kullanıcıya yönelik olduğunu belirtmek için.

https://example.page.link/?link=https://www.example.com/invitation?gameid%3D1234%26referrer%3D555&apn=com.example.android&ibi=com.example.ios&isi=12345

Bu bağlantıları paylaşmadan önce, daha kolay görünen URL'ler oluşturmak için Firebase Dynamic Links URL kısaltıcı API'sini kullanmak isteyebilirsiniz. Kısa bir Dinamik Bağlantı aşağıdaki örneğe benzer:

https://example.page.link/WXYZ

Hangi bağlantıyı kullanırsanız kullanın, kullanıcılar cihazlarında Dynamic Link'i açtığında, apn parametresi (Android'de) veya ibi ve isi parametreleri (iOS'ta) tarafından belirtilen uygulama, kullanıcıları uygulamayı yüklemeleri için Play Store'a veya App Store'a götürür. zaten yüklü değilse. Ardından, uygulama yüklenip açıldığında, 'bağlantı' parametresinde belirtilen URL uygulamaya iletilir.

İlk olarak, insanları sohbet odalarına davet etmek için bağlantılar oluşturan Hangouts gibi oda tabanlı bir sohbet uygulamasının bu basit örneğine bir göz atın.

iOS

chat app screenshotchat app screenshot with share sheet

Android

chat app screenshotchat app screenshot with share sheet

Süratli

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
func generateContentLink() -> URL {
  let baseURL = URL(string: "https://your-custom-name.page.link")!
  let domain = "https://your-app.page.link"
  let linkBuilder = DynamicLinkComponents(link: baseURL, domainURIPrefix: domain)
  linkBuilder?.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.your.bundleID")
  linkBuilder?.androidParameters =
      DynamicLinkAndroidParameters(packageName: "com.your.packageName")


  // Fall back to the base url if we can't generate a dynamic link.
  return linkBuilder?.link ?? baseURL
}

Amaç-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
- (NSURL *)generateContentLink {
  NSURL *baseURL = [NSURL URLWithString:@"https://your-custom-name.page.link"];
  NSString *domain = @"https://your-app.page.link";
  FIRDynamicLinkComponents *builder = [[FIRDynamicLinkComponents alloc] initWithLink:baseURL domainURIPrefix:domain];
  builder.iOSParameters = [FIRDynamicLinkIOSParameters parametersWithBundleID:@"com.your.bundleID"];
  builder.androidParameters = [FIRDynamicLinkAndroidParameters parametersWithPackageName:@"com.your.packageName"];

  // Fall back to the base url if we can't generate a dynamic link.
  return builder.link ?: baseURL;
}

Java

public static Uri generateContentLink() {
    Uri baseUrl = Uri.parse("https://your-custom-name.page.link");
    String domain = "https://your-app.page.link";

    DynamicLink link = FirebaseDynamicLinks.getInstance()
            .createDynamicLink()
            .setLink(baseUrl)
            .setDomainUriPrefix(domain)
            .setIosParameters(new DynamicLink.IosParameters.Builder("com.your.bundleid").build())
            .setAndroidParameters(new DynamicLink.AndroidParameters.Builder("com.your.packageName").build())
            .buildDynamicLink();

    return link.getUri();
}

Kotlin+KTX

fun generateContentLink(): Uri {
    val baseUrl = Uri.parse("https://your-custom-name.page.link")
    val domain = "https://your-app.page.link"

    val link = FirebaseDynamicLinks.getInstance()
            .createDynamicLink()
            .setLink(baseUrl)
            .setDomainUriPrefix(domain)
            .setIosParameters(DynamicLink.IosParameters.Builder("com.your.bundleid").build())
            .setAndroidParameters(DynamicLink.AndroidParameters.Builder("com.your.packageName").build())
            .buildDynamicLink()

    return link.uri
}

Dinamik bir bağlantınız olduğunda, kullanıcı arayüzünüze standart platform paylaşım akışını başlatacak bir paylaşım düğmesi ekleyebilirsiniz:

Süratli

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
lazy private var shareController: UIActivityViewController = {
  let activities: [Any] = [
    "Learn how to share content via Firebase",
    URL(string: "https://firebase.google.com")!
  ]
  let controller = UIActivityViewController(activityItems: activities,
                                            applicationActivities: nil)
  return controller
}()

@IBAction func shareButtonPressed(_ sender: Any) {
  let inviteController = UIStoryboard(name: "Main", bundle: nil)
    .instantiateViewController(withIdentifier: "InviteViewController")
  self.navigationController?.pushViewController(inviteController, animated: true)
}

Amaç-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
- (UIActivityViewController *)shareController {
  if (_shareController == nil) {
    NSArray *activities = @[
      @"Learn how to share content via Firebase",
      [NSURL URLWithString:@"https://firebase.google.com"]
    ];
    UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:activities applicationActivities:nil];
    _shareController = controller;
  }
  return _shareController;
}

- (IBAction)shareLinkButtonPressed:(UIView *)sender {
  if (![sender isKindOfClass:[UIView class]]) {
    return;
  }

  self.shareController.popoverPresentationController.sourceView = sender;
  [self presentViewController:self.shareController animated:YES completion:nil];
}

Java

private void onShareClicked() {
    Uri link = DynamicLinksUtil.generateContentLink();

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("text/plain");
    intent.putExtra(Intent.EXTRA_TEXT, link.toString());

    startActivity(Intent.createChooser(intent, "Share Link"));
}

Kotlin+KTX

private fun onShareClicked() {
    val link = DynamicLinksUtil.generateContentLink()

    val intent = Intent(Intent.ACTION_SEND)
    intent.type = "text/plain"
    intent.putExtra(Intent.EXTRA_TEXT, link.toString())

    startActivity(Intent.createChooser(intent, "Share Link"))
}

Bu örnekte, varsayılan paylaşım kullanıcı arayüzü, bağlantıyı paylaşmak için otomatik olarak bir uygulama listesi sunar; bu nedenle, yalnızca birkaç satır kodla kendi uygulamanızda ayarlayabileceğiniz bir şeydir.

Kullanıcının uygulamanızda kişileri seçmesini ve mesajı oluşturmasını sağlamak yerine, bu eylemler, paylaşım iletişim kutusundan seçtikleri uygulamaya atanır. Ek olarak, diğer uygulamalara paylaşım yetkisi vermek, kullanıcıdan kişi izinleri istemeniz gerekmediği anlamına gelir ve kullanıcıların seçtikleri uygulamada genişletilmiş bir kişi listesinden seçim yapmasına olanak tanır. Sosyal paylaşımı daha iyi kolaylaştırmak için, ana sosyal kanallarda bağlantıyla birlikte görüntülenecek olan dinamik bağlantınıza sosyal medya önizleme meta verileri ekleyebilirsiniz .

Ancak bazen, yalnızca metin içermeyen bir bağlantı göndermek, zorlayıcı bir yönlendirme için yeterli değildir. Bağlantıya kısa bir mesaj ve mümkünse daha zengin bir sunum ekleyerek, kullanıcılar tavsiyeyi aldıklarında tavsiyenin değer teklifini anlayabilirler:

iOS

rewarded referral screenshotrewarded referral screenshot with share sheet

Android

rewarded referral screenshotrewarded referral screenshot with share sheet

Bu, son örnekten daha karmaşık olsa da, yaklaşım aşağı yukarı aynı olacaktır. Bu ekranda, davetin değer önerisini ve büyük sosyal kanallarla paylaşmak için düğmeleri içeren büyük bir grafik var. Bu kullanıcı arayüzü akışında bir miktar fazlalık vardır; bazı paylaşım kanalları, e-posta davetlerine konu satırı eklemek gibi daha kanala özel mesaj özelleştirmesine izin vermek için ayrı ayrı sunulur. Bu davet menüsünde biz:

  • E-posta, metin mesajı ve kopya bağlantı paylaşma düğmelerini sunun ve mesajlarını uygun şekilde özelleştirin. E-posta bir konu içerir ve satır sonları, resimler ve boşluk içeren daha uzun bir gövde içerebilir; metin, satır sonları olan, ancak çok az boşluk bulunan ve resim içermeyen daha kısa bir gövde içermelidir; ve bağlantı kopyalama, yalnızca bağlantıyı kopyalamalı ve başka bir şey yapmamalıdır.
  • Bağlantıya eşlik edecek kısa bir davet mesajı da dahil olmak üzere diğer her şey için sistem paylaşım kullanıcı arayüzünü kullanın.
  • Uygulamanızın davetlerini işlemek için özel mantığı olan başka bir uygulamaya URL şeması veya evrensel bağlantı yoluyla derin bağlantı. Bu, kuruluşunuz ve diğer uygulama arasındaki ortaklık dışında çalışmaz ve büyük olasılıkla daha küçük kuruluşlar için bir seçenek değildir. Bununla birlikte, bazı uygulamalar evrensel/derin bağlantı davranışlarını herkese açık olarak belgeleyebilir. Örneğimizde bunun kukla bir versiyonunu uygulayacağız.

İlk olarak, yalnızca bir davetteki bilgileri içeren ve hiçbir işlevsellik içermeyen bir davet içerik türü tanımlayın. Bu şekilde, veri türleriyle başlayabilir ve kodunuzun bu verileri nasıl bir araya getirdiğini düşünebilirsiniz.

Süratli

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
/// The content within an invite, with optional fields to accommodate all presenters.
/// This type could be modified to also include an image, for sending invites over email.
struct InviteContent {

  /// The subject of the message. Not used for invites without subjects, like text message invites.
  var subject: String?

  /// The body of the message. Indispensable content should go here.
  var body: String?

  /// The URL containing the invite. In link-copy cases, only this field will be used.
  var link: URL

}

Amaç-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
/// The content within an invite, with optional fields to accommodate all presenters.
/// This type could be modified to also include an image, for sending invites over email.
@interface InviteContent : NSObject <NSCopying>

/// The subject of the message. Not used for invites without subjects, like text message invites.
@property (nonatomic, readonly, nullable) NSString *subject;

/// The body of the message. Indispensable content should go here.
@property (nonatomic, readonly, nullable) NSString *body;

/// The URL containing the invite. In link-copy cases, only this field will be used.
@property (nonatomic, readonly) NSURL *link;

- (instancetype)initWithSubject:(nullable NSString *)subject
                           body:(nullable NSString *)body
                           link:(NSURL *)link NS_DESIGNATED_INITIALIZER;

- (instancetype)init NS_UNAVAILABLE;

@end

Java

/**
 * The content of an invitation, with optional fields to accommodate all presenters.
 * This type could be modified to also include an image, for sending invites over email.
 */
public class InviteContent {

    /**
     * The subject of the message. Not used for invites without subjects, like SMS.
     **/
    @Nullable
    public final String subject;

    /**
     * The body of the message. Indispensable content should go here.
     **/
    @Nullable
    public final String body;

    /**
     * The URL containing the link to invite. In link-copy cases, only this field will be used.
     **/
    @NonNull
    public final Uri link;

    public InviteContent(@Nullable String subject, @Nullable String body, @NonNull Uri link) {
        // ...
    }

}

Kotlin+KTX

/**
 * The content of an invitation, with optional fields to accommodate all presenters.
 * This type could be modified to also include an image, for sending invites over email.
 */
data class InviteContent(
    /** The subject of the message. Not used for invites without subjects, like SMS.  */
    val subject: String?,
    /** The body of the message. Indispensable content should go here.  */
    val body: String?,
    /** The URL containing the link to invite. In link-copy cases, only this field will be used.  */
    val link: Uri
)

Burada gerekli olan tek veri parçası URL'dir ve bu olmadan kullanıcıları uygulamanıza davet edemezsiniz. Diğer veri parçaları açıkça e-posta göndermeye yönelik olarak yapılandırılmıştır, bu da diğer bazı durumlarda onları biraz garip hale getirir - metin üzerinden bir davet gönderirken, bağlantıya eşlik eden tanıtım yazısı bir e-posta konusuna benzer şekilde okunabilir, ancak sosyal medyada paylaşırken metne eşlik eden bağlantı daha çok bir e-posta gövdesi gibi olabilir. Uygulamanız için en iyi dengeyi bulmak için bunu kendiniz denemeniz gerekecek ve emin değilseniz, uygulama başlatıldıktan sonra metin değerlerini değiştirmenize izin vermek için her zaman Remote Config gibi bir hizmet kullanabilirsiniz.

Süratli

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
/// A type responsible for presenting an invite given using a specific method
/// given the content of the invite.
protocol InvitePresenter {

  /// The name of the presenter. User-visible.
  var name: String { get }

  /// An icon representing the invite method. User-visible.
  var icon: UIImage? { get }

  /// Whether or not the presenter's method is available. iOS devices that aren't phones
  /// may not be able to send texts, for example.
  var isAvailable: Bool { get }

  /// The content of the invite. Some of the content type's fields may be unused.
  var content: InviteContent { get }

  /// Designated initializer.
  init(content: InviteContent, presentingController: UIViewController)

  /// This method should cause the presenter to present the invite and then handle any actions
  /// required to complete the invite flow.
  func sendInvite()

}

Amaç-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
/// A type responsible for presenting an invite given using a specific method
/// given the content of the invite.
@protocol InvitePresenter <NSObject>

/// The name of the presenter. User-visible.
@property (nonatomic, readonly) NSString *name;

/// An icon representing the invite method. User-visible.
@property (nonatomic, readonly, nullable) UIImage *icon;

/// Whether or not the presenter's method is available. iOS devices that aren't phones
/// may not be able to send texts, for example.
@property (nonatomic, readonly) BOOL isAvailable;

/// The content of the invite. Some of the content type's fields may be unused.
@property (nonatomic, readonly) InviteContent *content;

/// Designated initializer.
- (instancetype)initWithContent:(InviteContent *)content presentingViewController:(UIViewController *)controller;

/// This method should cause the presenter to present the invite and then handle any actions
/// required to complete the invite flow.
- (void)sendInvite;

@end

Java

/**
 * Presents the invite using a specific method, such as email or social.
 */
public class InvitePresenter {

    /**
     * The user-visible name of the invite method, like 'Email' or 'SMS'
     **/
    public final String name;

    /**
     * An icon representing the invite method.
     **/
    @DrawableRes
    public final int icon;

    /**
     * Whether or not the method is available on this device. For example, SMS is phone only.
     **/
    public final boolean isAvailable;

    /**
     * The Content of the invitation
     **/
    public final InviteContent content;

    public InvitePresenter(String name, @DrawableRes int icon, boolean isAvailable, InviteContent content) {
        // ...
    }

    /**
     * Send the invitation using the specified method.
     */
    public void sendInvite(Context context) {
        // ...
    }

}

Kotlin+KTX

/**
 * Presents the invite using a specific method, such as email or social.
 */
open class InvitePresenter(
    /** The user-visible name of the invite method, like 'Email' or 'SMS'  */
    val name: String,
    /** An icon representing the invite method.  */
    @param:DrawableRes @field:DrawableRes
    val icon: Int,
    /** Whether or not the method is available on this device. For example, SMS is phone only.  */
    val isAvailable: Boolean,
    /** The Content of the invitation  */
    val content: InviteContent
) {
    /**
     * Send the invitation using the specified method.
     */
    open fun sendInvite(context: Context) {
        // ...
    }
}

Şimdi geriye kalan tek şey bunu seçtiğiniz bir UI bileşenine eklemek. Bu davet akışının tam olarak uygulanması için iOS ve Android için GitHub'daki örneklere bakın.

Bunların tümü, kullanıcılarınızın arkadaşlarına davetiye göndermelerini sağlayan yöntemlerdir ki bu en hafif davet çözümüdür. Pek çok popüler uygulama, bir posta gönderme hizmetinin entegre edilmesini gerektiren, ancak yalnızca birkaç küçük dezavantajla birlikte mevcut olmayan bir dizi avantaj sunan kendi arka uçları aracılığıyla e-posta göndererek de davetiyeler sunar.

Artıları:

  • Göndermeden önce kullanıcı tarafından değiştirilemeyen karmaşık biçimlendirmeye sahip e-postaları etkinleştirir.
  • Daha ayrıntılı izleme/analitik sağlar (yani, arka ucunuzdaki başarıları ve hataları gönderin).

Eksileri:

  • E-postaların spam olarak işaretlenme olasılığı daha yüksek
  • Bir e-posta dağıtım hizmetiyle entegrasyon gerektirir
  • Uygulama içi kişi izinleri gerektirir

Genel olarak, davetleri kendi e-posta dağıtım hizmetiniz aracılığıyla göndermek, çok yönlülük pahasına daha tutarlı ve potansiyel olarak daha zengin bir davet deneyimi sağlar.

Uygulamanızda bağlantılı içeriği açın

Son olarak, bağlantılı içeriği alıcıya gösterebilmeniz için uygulamanıza iletilen bağlantıyı almanız gerekir. Dynamic Links SDK'sını kullanmak kolaydır:

iOS

iOS'ta, application:continueUserActivity:restorationHandler: yöntemini uygulayarak Dinamik Bağlantıyı alırsınız. Geri yükleme işleyicisinde, handleUniversalLink:completion: arayarak Dinamik Bağlantıyı alabilirsiniz. Uygulamanıza bir Dinamik Bağlantı aktarıldıysa, bunu FIRDynamicLink url özelliğinden alabilirsiniz. Örneğin:

Amaç-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
[[FIRDynamicLinks dynamicLinks]
    handleUniversalLink:userActivity.webpageURL
             completion:^(FIRDynamicLink * _Nullable dynamicLink,
                          NSError * _Nullable error) {
      NSString *link = dynamicLink.url;
      BOOL strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong;
      // ...
    }];

Süratli

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
FIRDynamicLinks.dynamicLinks()?.handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
    let link = dynamicLink.url
    let strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong
    // ...
}

Ayrıca, uygulamanıza özel şema URL'leri olarak geçirilen Dinamik Bağlantıları almak için application:openURL:options: yönteminde dynamicLinkFromCustomSchemeURL: çağırmalısınız. Örneğin:

Amaç-C

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
if (dynamicLink) {
  NSString *link = dynamicLink.url;
  BOOL strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong;
  // ...
  return YES;
}

Süratli

Not: Bu Firebase ürünü macOS, Mac Catalyst, tvOS veya watchOS hedeflerinde mevcut değildir.
let dynamicLink = FIRDynamicLinks.dynamicLinks()?.dynamicLinkFromCustomSchemeURL(url)
if let dynamicLink = dynamicLink {
  let link = dynamicLink.url
  let strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong
  // ...
  return true
}

Artık link parametresinin değerine sahip olduğunuza göre, bağlantılı içeriği alıcıya görüntüleyebilir veya parametre tarafından belirtilen verileri başka bir şekilde işleyebilirsiniz. JLRoutes gibi bir URL yönlendirme kitaplığı bu görevde yardımcı olabilir.

Belirli bir alıcıya yönelik bir bağlantı alıyorsanız, kullanıcıya özel herhangi bir mantığı çalıştırmadan önce Dinamik Bağlantının eşleşme güveninin strong olduğundan emin olun.

Android

Android'de, Dinamik Bağlantı'dan veri almak için getDynamicLink() yöntemini kullanırsınız:

Java

FirebaseDynamicLinks.getInstance()
        .getDynamicLink(getIntent())
        .addOnCompleteListener(new OnCompleteListener<PendingDynamicLinkData>() {
            @Override
            public void onComplete(@NonNull Task<PendingDynamicLinkData> task) {
                if (!task.isSuccessful()) {
                    // Handle error
                    // ...
                }

                FirebaseAppInvite invite = FirebaseAppInvite.getInvitation(task.getResult());
                if (invite != null) {
                    // Handle invite
                    // ...
                }
            }
        });

Kotlin+KTX

Firebase.dynamicLinks
        .getDynamicLink(intent)
        .addOnCompleteListener { task ->
            if (!task.isSuccessful) {
                // Handle error
                // ...
            }

            val invite = FirebaseAppInvite.getInvitation(task.result)
            if (invite != null) {
                // Handle invite
                // ...
            }
        }

Artık link parametresinin değerine sahip olduğunuza göre, bağlantılı içeriği alıcıya görüntüleyebilir veya parametre tarafından belirtilen verileri başka bir şekilde işleyebilirsiniz. Bir URL yönlendirme kitaplığı bu göreve yardımcı olabilir.