הזמן משתמשים לאפליקציה שלך

אחת הדרכים היעילות ביותר לגרום למשתמשים חדשים להתקין את האפליקציה שלך היא לאפשר למשתמשים שלך לשתף תוכן מהאפליקציה שלך עם חבריהם. עם קישורים דינמיים, אתה יכול ליצור חווית שיתוף נהדרת ממשתמש למשתמש: משתמשים שמקבלים המלצות תוכן מחבריהם יכולים ללחוץ על קישור ולהעביר אותם ישירות לתוכן המשותף באפליקציה שלך, גם אם הם צריכים לעבור לאפליקציה חנות או חנות Google Play כדי להתקין תחילה את האפליקציה שלך.

על ידי שילוב של הדביקות של הפניות משתמשים והתמדה של קישורים דינמיים, אתה יכול ליצור תכונות שיתוף והפניה ממשתמש למשתמש שמביאות משתמשים חדשים על ידי משיכתם ישירות לתוכן האפליקציה שלך או הגשת מבצעים שיועילו הדדית למפנה והמופנה. .

יתרונות מרכזיים

  • משתמשים חדשים הפותחים את האפליקציה שלך בפעם הראשונה מקבלים חווית הפעלה ראשונה מותאמת אישית המותאמת להקשר על סמך מה שהחבר שלהם רצה לחלוק איתם. לדוגמה, אתה יכול להציג את התוכן ששותף איתם, או לחבר אותם אוטומטית עם החבר שהזמין אותם.
  • מקל על משתמשים לשתף תוכן עם חבריהם בפלטפורמות, בין אם החברים שלהם התקינו את האפליקציה שלך ובין אם לאו.

הנה איך להתחיל!

הגדרת פרויקט Firebase חדש ולהתקין את ה- SDK קישורים דינאמיים לתוך האפליקציה.

התקנת ה-SDK של Dynamic Links מאפשרת ל-Firebase להעביר נתונים על הקישור הדינמי לאפליקציה, כולל לאחר שהמשתמש מתקין את האפליקציה.

עכשיו הגיע הזמן להגדיר את הקישורים שמשתמשים יכולים לשלוח לחבריהם. אל תדאג אם החברים של המשתמשים שלך עדיין לא התקינו את האפליקציה; קישורים דינמיים יכולים לטפל בזה בשבילך.

לכל רכיב של תוכן אתה רוצה להיות כזה שאפשר לקחת, ליצור קישור דינמי .

כאשר אתה יוצר קישור הדינמי, עליך לספק HTTP או HTTPS URL כמו link הפרמטר אשר ישמש כדי לזהות את התוכן שאתה השיתוף אתה. אם יש לך אתר עם תוכן שווה ערך, עליך להשתמש בכתובות האתרים של האתר שלך. זה יבטיח שקישורים אלו יוצגו כהלכה בפלטפורמה שאינה תומכת בקישורים דינמיים, כגון דפדפן שולחני. לדוגמה:

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

אתה יכול גם להוסיף מידע נוסף למטען הנתונים על ידי הוספת פרמטרים מקודדים ב-URL - לדוגמה, כדי לציין שהקישור מיועד למשתמש מסוים, כגון בהזמנה למשחק.

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

לפני שאתה משתף את הקישורים הללו, אולי כדאי לך להשתמש ב- API מקצר כתובות קישורים Firebase דינמי כדי ליצור את כתובות ידידותי למראה. במראהו קצר קישור דינמי כמו בדוגמה הבאה:

https://example.page.link/WXYZ

לא משנה באיזו לקשר אתה משתמש, כאשר משתמש לפתוח את הקישור הדינמי במכשיר שלהם, האפליקציה שקבעה apn הפרמטר (באנדרואיד) או ibi ו isi הפרמטרים (על iOS) תיקח את משתמשים אל Play Store או App Store כדי להתקין את האפליקציה אם הוא עדיין לא מותקן. לאחר מכן, כאשר האפליקציה מותקנת ונפתחת, כתובת האתר המצוינת בפרמטר 'קישור' מועברת לאפליקציה.

ראשית, תסתכל על הדוגמה הפשוטה הזו של אפליקציית צ'אט מבוססת חדר כמו Hangouts שמייצרת קישורים להזמנת אנשים לחדרי צ'אט.

iOS

chat app screenshotchat app screenshot with share sheet

דְמוּי אָדָם

chat app screenshotchat app screenshot with share sheet

מָהִיר

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
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
}

Objective-C

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
- (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();
}

קוטלין+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
}

ברגע שיש לך קישור דינמי, תוכל להוסיף לחצן שיתוף לממשק המשתמש שלך שיפעיל את זרימת השיתוף הסטנדרטית של הפלטפורמה:

מָהִיר

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
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)
}

Objective-C

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
- (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"));
}

קוטלין+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"))
}

בדוגמה זו, ממשק המשתמש של שיתוף ברירת המחדל מציג אוטומטית רשימה של אפליקציות לשיתוף הקישור, כך שזה משהו שאתה יכול להגדיר באפליקציה שלך עם כמה שורות קוד בלבד.

במקום שהמשתמש יבחר אנשי קשר ויחבר את ההודעה באפליקציה שלך, פעולות אלה מואצלות לאפליקציה שהוא בוחר מתיבת הדו-שיח של השיתוף. בנוסף, האצלת שיתוף לאפליקציות אחרות פירושה שאינך צריך לבקש מהמשתמש הרשאות אנשי קשר ומאפשר למשתמשים לבחור מתוך רשימת אנשי קשר מורחבת בתוך האפליקציה שבחרת. כדי להקל יותר שיתוף חברתי, אתה יכול להוסיף metadata תצוגה במדיה חברתית כדי הקישור הדינאמי שלך אשר יוצג יחד עם הקישור בערוצים חברתיים מרכזיים.

עם זאת, לפעמים, רק שליחת קישור חשוף ללא טקסט אינה מספיקה להפניה משכנעת. על ידי ליווי הקישור בהודעה קצרה ובמידת האפשר מצגת עשירה יותר, המשתמשים יכולים להבין את הצעת הערך של ההפניה כאשר הם מקבלים אותה:

iOS

rewarded referral screenshotrewarded referral screenshot with share sheet

דְמוּי אָדָם

rewarded referral screenshotrewarded referral screenshot with share sheet

למרות שזה מורכב יותר מהדוגמה האחרונה, הגישה תהיה פחות או יותר זהה. במסך זה יש גרפיקה גדולה עם הצעת הערך של ההזמנה וכפתורים לשיתוף בערוצים חברתיים גדולים. יש יתירות מסוימת בזרימת ממשק המשתמש הזו - חלק מערוצי השיתוף מוצגים בנפרד כדי לאפשר התאמה אישית של הודעות ספציפיות יותר לערוץ, כמו הוספת שורת נושא להזמנות בדוא"ל. בתפריט ההזמנות הזה, אנחנו:

  • הצג כפתורי דואר אלקטרוני, הודעת טקסט והעתקת קישורים לשיתוף, והתאם אישית את ההודעות שלהם כראוי. האימייל יכלול נושא ויכול לכלול גוף ארוך יותר עם מעברי שורות, תמונות ורווח לבן; טקסט צריך לכלול גוף קצר יותר עם מעברי שורות אך מעט רווחים וללא תמונות; והעתקת קישורים צריכה פשוט להעתיק את הקישור ולא שום דבר אחר.
  • השתמש בממשק המשתמש של שיתוף המערכת לכל השאר, כולל הודעת הזמנה קצרה שילווה את הקישור.
  • קישור עומק באמצעות ערכת URL או קישור אוניברסלי לאפליקציה אחרת שיש לה היגיון מיוחד לטיפול בהזמנות של האפליקציה שלך. זה לא יעבוד מחוץ לשותפות בין הארגון שלך לאפליקציה האחרת, וסביר להניח שהוא לא אופציה עבור ארגונים קטנים יותר. עם זאת, אפליקציות מסוימות עשויות לתעד בפומבי את התנהגותן האוניברסלית/הקישורית העמוקה. ניישם גרסת דמה של זה בדוגמה שלנו.

ראשית, הגדירו סוג תוכן של הזמנה, שמכיל רק את המידע בהזמנה ואינו מכיל פונקציונליות. בדרך זו, אתה יכול להתחיל עם סוגי הנתונים ולחשוב על הקוד שלך במונחים של האופן שבו הוא מחבר את הנתונים האלה יחד.

מָהִיר

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
/// 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

}

Objective-C

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
/// 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) {
        // ...
    }

}

קוטלין+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
)

פיסת הנתונים הנדרשת היחידה כאן היא כתובת האתר, שבלעדיה אינך יכול להזמין משתמשים לאפליקציה שלך. חלקי הנתונים האחרים בנויים בבירור לקראת שליחת מיילים, מה שהופך אותם למעט מביכים במקרים אחרים - כאשר שולחים הזמנה באמצעות הודעת טקסט, הטקסט הנלווה לקישור עשוי להיקרא באופן דומה לנושא דוא"ל, אך בעת שיתוף במדיה חברתית הקישור הנלווה לטקסט עשוי להיות יותר כמו גוף דוא"ל. תצטרך להתנסות עם עצמך זה כדי למצוא את האיזון הטוב ביותר עבור היישום שלך, ואם אתה לא בטוח והמודעות, אתה תמיד יכול להשתמש בשירות כמו מרחוק Config כדי לאפשר לך לשנות את ערכי טקסט לאחר השקת האפליקציה.

מָהִיר

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
/// 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()

}

Objective-C

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
/// 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) {
        // ...
    }

}

קוטלין+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) {
        // ...
    }
}

כעת כל מה שנותר הוא לחבר את זה לרכיב ממשק משתמש לבחירתך. לשם יישום מלא של זרימת מזמינים הזה, לראות את הדוגמאות על GitHub עבור iOS ו- Android .

כל אלו הן השיטות לאפשר למשתמשים שלך לשלוח הזמנות לחברים שלהם, שזהו פתרון ההזמנה הקל ביותר. אפליקציות פופולריות רבות מספקות גם הזמנות על ידי שליחת אימיילים דרך הקצה האחורי שלהן, מה שדורש שילוב של שירות שליחת דואר, אך מציע מספר הטבות שאינן זמינות אחרת עם מספר חסרונות קלים בלבד.

יתרונות:

  • מאפשר הודעות דוא"ל עם סימון מורכב שלא ניתן לשנות על ידי המשתמש שלך לפני השליחה.
  • מאפשר מעקב/ניתוח מפורט יותר (כלומר שליחת הצלחות וכישלונות בקצה האחורי שלך).

חסרונות:

  • סביר יותר שהודעות דוא"ל יסומנו כדואר זבל
  • דורש אינטגרציה עם שירות משלוח דואר אלקטרוני
  • דורש הרשאות אנשי קשר בתוך האפליקציה

בדרך כלל, שליחת הזמנות דרך שירות משלוח הדואר האלקטרוני שלך מספקת חווית הזמנות עקבית יותר ועלולה להיות עשירה יותר במחיר של רבגוניות.

פתח את התוכן המקושר באפליקציה שלך

לבסוף, עליך לקבל את הקישור שהועבר לאפליקציה שלך כדי שתוכל להציג את התוכן המקושר לנמען. זה קל באמצעות SDK של קישורים דינמיים:

iOS

ב- iOS, אתה מקבל קישור דינמי על ידי יישום application:continueUserActivity:restorationHandler: השיטה. בשנת מטפל השיקום, אתה יכול לקבל את הקישור הדינמי על ידי התקשרות handleUniversalLink:completion: . אם Dynamic Link הועברה האפליקציה שלך, אתה יכול לקבל את זה מן url הרכוש של FIRDynamicLink . לדוגמה:

Objective-C

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
[[FIRDynamicLinks dynamicLinks]
    handleUniversalLink:userActivity.webpageURL
             completion:^(FIRDynamicLink * _Nullable dynamicLink,
                          NSError * _Nullable error) {
      NSString *link = dynamicLink.url;
      BOOL strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong;
      // ...
    }];

מָהִיר

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
FIRDynamicLinks.dynamicLinks()?.handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
    let link = dynamicLink.url
    let strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong
    // ...
}

בנוסף, אתה חייב לקרוא dynamicLinkFromCustomSchemeURL: בתוך application:openURL:options: שיטה לקבל דינמי קישורים עבר אל האפליקציה שלך כתובות בסכמה מותאמת אישית. לדוגמה:

Objective-C

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
if (dynamicLink) {
  NSString *link = dynamicLink.url;
  BOOL strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong;
  // ...
  return YES;
}

מָהִיר

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
let dynamicLink = FIRDynamicLinks.dynamicLinks()?.dynamicLinkFromCustomSchemeURL(url)
if let dynamicLink = dynamicLink {
  let link = dynamicLink.url
  let strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong
  // ...
  return true
}

עכשיו שיש לך את הערך של link פרמטר, אתה יכול להציג את התוכן צמוד הנמען, או לעבד את הנתונים שצוינו על ידי פרמטר בדרך אחרת. כתובת URL-ניתוב כגון הספרייה כפי JLRoutes יכול לעזור עם משימה זו.

אם אתה מקבל קישור מיועד לנמען ספציפי, להבטיח כי אמון התאמה של Dynamic Link הוא strong לפני הפעלת כל היגיון ספציפי למשתמש.

דְמוּי אָדָם

ב- Android, ניתן להשתמש getDynamicLink() שיטה לקבלת נתונים מהקישור הדינמי:

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

קוטלין+KTX

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

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

עכשיו שיש לך את הערך של link פרמטר, אתה יכול להציג את התוכן צמוד הנמען, או לעבד את הנתונים שצוינו על ידי פרמטר בדרך אחרת. ספריית ניתוב כתובות אתרים יכולה לעזור במשימה זו.