Kullanıcıları Uygulamanıza Davet Edin

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 proje ayarlayın ve uygulamanıza Dinamik Linkler SDK'yı 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 iletmesine 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.

Eğer paylaşılabilir olmasını istediğiniz içeriğin her element için, Dinamik Bağlantı oluşturabilirsiniz .

Dinamik Linki oluştururken, gibi bir HTTP veya HTTPS URL sağlamanız gerekir link içeriğini sen paylaşımı tanımlamak için kullanılacaktır parametresi. 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 ş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şan önce, kullanmak isteyebilirsiniz Firebase Dinamik Linkler URL kısaltıcı API dostça görünen URL oluşturma. Aşağıdaki örnekteki gibi kısa bir dinamik bağlantı görünüyor:

https://example.page.link/WXYZ

Hangisi kullanıcılar cihazlarında Dinamik Linki açtığınızda, kullanmak bağlantısını tarafından belirtilen uygulama apn (Android'de) parametresi veya ibi ve isi (iOS'ta) parametrelere uygulamayı yüklemek için Play Store'da veya App Store götürülü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 hedefler üzerinde kullanılamaz.
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 hedefler üzerinde kullanılamaz.
- (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 hedefler üzerinde kullanılamaz.
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 hedefler üzerinde kullanılamaz.
- (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. Daha iyi sosyal paylaşımı kolaylaştırmak için şunları yapabilirsiniz sosyal medya önizleme meta verileri eklemek büyük sosyal kanallarda bağlantı ile birlikte görüntülenecek olan dinamik bağlantı.

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 hedefler üzerinde kullanılamaz.
/// 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 hedefler üzerinde kullanılamaz.
/// 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 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 bu kendinle deneme gerekecek, ve sen emin, her zaman böyle bir hizmeti kullanabilirsiniz Uzaktan Config'de Eğer uygulama başlatılırken sonra metin değerleri değiştirmek için izin vermek.

Süratli

Not: Bu Firebase ürün MacOS Mac Catalyst, tvOS veya watchos hedefler üzerinde kullanılamaz.
/// 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 hedefler üzerinde kullanılamaz.
/// 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, GitHub'dan örneklerini görmek iOS için ve Android .

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

İOS'ta sen uygulayarak Dinamik Linki almak application:continueUserActivity:restorationHandler: yöntemi. Restorasyon işleyicisi olarak, arayarak Dinamik Linki alabilirsiniz handleUniversalLink:completion: . Dynamic Link uygulamanıza geçirildi varsa, mal alabilirsiniz url özelliğine FIRDynamicLink . Örneğin:

Amaç-C

Not: Bu Firebase ürün MacOS Mac Catalyst, tvOS veya watchos hedefler üzerinde kullanılamaz.
[[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 hedefler üzerinde kullanılamaz.
FIRDynamicLinks.dynamicLinks()?.handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
    let link = dynamicLink.url
    let strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong
    // ...
}

Ayrıca, çağırmanız gerekir dynamicLinkFromCustomSchemeURL: in application:openURL:options: Dinamik Linkler almak üzere yönteme özel düzeni URL'ler olarak uygulamanıza geçti. Örneğin:

Amaç-C

Not: Bu Firebase ürün MacOS Mac Catalyst, tvOS veya watchos hedefler üzerinde kullanılamaz.
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 hedefler üzerinde kullanılamaz.
let dynamicLink = FIRDynamicLinks.dynamicLinks()?.dynamicLinkFromCustomSchemeURL(url)
if let dynamicLink = dynamicLink {
  let link = dynamicLink.url
  let strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong
  // ...
  return true
}

Şimdi bir değere sahip olduğu link parametresi, alıcının bağlı içerik görüntülemek veya başka bir şekilde parametresi tarafından belirtilen verileri işleyebilir. Olarak bir kütüphane, bu URL yönlendirme JLRoutes bu görev ile yardımcı olabilir.

Eğer bir bağlantı belirli bir alıcıya yönelik alıyorsanız, Dinamik Link'in maç güveni olmasını sağlamak strong herhangi kullanıcıya özgü mantığını çalıştırmadan önce.

Android

Android'de, kullanmak getDynamicLink() Dinamik Bağlantı verileri almak için yöntem:

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
                // ...
            }
        }

Şimdi bir değere sahip olduğu link parametresi, alıcının bağlı içerik görüntülemek veya başka bir şekilde parametresi tarafından belirtilen verileri işleyebilir. Bir URL yönlendirme kitaplığı bu göreve yardımcı olabilir.