Firebase is back at Google I/O on May 10! Register now

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ını sağlamaktır. Dinamik Bağlantılar ile harika bir kullanıcıdan kullanıcıya paylaşım deneyimi oluşturabilirsiniz: 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önlendirilebilir. Önce uygulamanızı yüklemek için Store veya Google Play Store.

Kullanıcı yönlendirmelerinin kalıcılığı ile Dinamik Bağlantıların sürekliliğini birleştirerek, yeni kullanıcıları doğrudan uygulamanızın içeriğine çekerek veya yönlendiren ile yönlendirilen arasında karşılıklı yarar sağlayan promosyonlar sunarak kullanıcıdan kullanıcıya paylaşım ve yönlendirme özellikleri oluşturabilirsiniz. .

Önemli avantajlar

  • Uygulamanızı ilk kez açan yeni kullanıcılar, arkadaşlarının kendileriyle 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ı, onları davet eden arkadaşa otomatik olarak bağlayabilirsiniz.
  • Arkadaşlarında uygulamanız yüklü olsun ya da olmasın, kullanıcıların platformlar genelinde arkadaşlarıyla içerik paylaşmasını kolaylaştırır.

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

Yeni bir Firebase projesi kurun ve Dynamic Links SDK'yı uygulamanıza yükleyin.

Dynamic Links SDK'nın yüklenmesi, Firebase'in, kullanıcının 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ı kurmaya geldi. Kullanıcılarınızın arkadaşları henüz uygulamayı yüklemediyse endişelenmeyin; Dynamic Links bunu sizin yerinize 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 masaüstü tarayıcı 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 belirli bir kullanıcıya yönelik olduğunu belirtmek için, örneğin bir oyun davetinde.

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ıklarında, apn parametresi (Android'de) veya ibi ve isi parametreleriyle (iOS'ta) belirtilen uygulama, kullanıcıları uygulamayı yüklemeleri için Play Store veya App Store'a götürür. zaten kurulu değilse. Ardından, uygulama yüklenip açıldığında, 'bağlantı' parametresinde belirtilen URL uygulamaya iletilir.

Öncelikle, insanları sohbet odalarına davet etmek için bağlantılar oluşturan Hangouts gibi oda tabanlı bir sohbet uygulamasına ilişkin bu basit örneğe bakı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;
}

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
}

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

Dinamik bir bağlantınız olduğunda, kullanıcı arabiriminize 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];
}

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

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

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

Kullanıcının kişileri seçmesini ve uygulamanızda mesajı oluşturmasını sağlamak yerine, bu eylemler, paylaşım iletişim kutusundan seçtikleri uygulamaya atanır. Ayrıca, 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 uygulama içinde genişletilmiş bir kişi listesinden seçim yapmasına olanak tanır. Sosyal paylaşımı daha iyi kolaylaştırmak için dinamik bağlantınıza, bağlantıyla birlikte büyük sosyal kanallarda görüntülenecek olan sosyal medya önizleme meta verilerini ekleyebilirsiniz .

Ancak bazen, yalnızca metin içermeyen çıplak bir bağlantı göndermek, ikna edici bir yönlendirme için yeterli değildir. Bağlantıya kısa bir mesaj ve mümkünse daha zengin bir sunum eşlik ederek, kullanıcılar yönlendirmeyi aldıklarında 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 teklifini ve büyük sosyal kanallarda paylaşmak için düğmeleri içeren büyük bir grafik var. Bu kullanıcı arabirimi akışında biraz fazlalık var; bazı paylaşım kanalları, e-posta davetlerine bir konu satırı eklemek gibi kanala özgü daha fazla mesaj özelleştirmesine izin vermek için ayrı ayrı sunulur. Bu davet menüsünde biz:

  • E-posta, kısa mesaj ve kopya bağlantı paylaşım 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 içeren ve resim içermeyen daha kısa bir gövde içermelidir; ve bağlantı kopyalama, yalnızca bağlantıyı kopyalamalı, 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 ile diğer uygulama arasındaki ortaklığın dışında çalışmaz ve muhtemelen 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 sahte bir sürümünü uygulayacağız.

İlk olarak, yalnızca bir davetteki bilgileri kapsayan ve hiçbir işlevsellik içermeyen bir davet içerik türü tanımlayın. Bu şekilde, veri türleriyle başlayabilir ve kodunuzu bu verileri nasıl bir araya getirdiği açısından 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

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
)

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

}

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

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

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

}

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

Bunların hepsi, kullanıcılarınızın arkadaşlarına davetiye göndermesini sağlamanın en hafif davet çözümü olan yöntemleridir. Pek çok popüler uygulama ayrıca, bir posta gönderme hizmetinin entegre edilmesini gerektiren, ancak yalnızca birkaç küçük dezavantaj dışında başka türlü sağlanamayan bir dizi avantaj sunan kendi arka uçları aracılığıyla e-postalar göndererek davetiyeler gönderir.

Artıları:

  • Göndermeden önce kullanıcınız 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 başarısızlıkları gönderin).

Eksileri:

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

Genel olarak, davetiyeleri 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.

Bağlantılı içeriği uygulamanızda açın

Son olarak, bağlantılı içeriği alıcıya gösterebilmek için uygulamanıza iletilen bağlantıyı almanız gerekir. Dynamic Links SDK'yı 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: çağırarak Dinamik Bağlantıyı alabilirsiniz. Uygulamanıza bir Dinamik Bağlantı aktarıldıysa, bunu FIRDynamicLink öğesinin 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
    // ...
}

Ek olarak, uygulamanıza özel şema URL'leri olarak iletilen Dinamik Bağlantıları almak için application:openURL:options: yönteminde dynamicLinkFromCustomSchemeURL: : öğesini ç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öreve yardımcı olabilir.

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

Android

Android'de, Dynamic Link'ten veri almak için getDynamicLink() yöntemini kullanırsınız:

Kotlin+KTX

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

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

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

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.