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

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

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

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

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

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

הגדר פרויקט Firebase חדש והתקן את ה-SDK של Dynamic Links באפליקציה שלך.

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

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

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

כאשר אתה יוצר את הקישור הדינמי, תצטרך לספק כתובת URL של HTTP או HTTPS כפרמטר 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 של מקצר כתובות ה-URL של Firebase Dynamic Links כדי ליצור כתובות URL בעלות מראה ידידותי יותר. קישור דינמי קצר נראה כמו הדוגמה הבאה:

https://example.page.link/WXYZ

לא משנה באיזה קישור אתה משתמש, כאשר משתמשים פותחים את הקישור הדינמי במכשיר שלהם, האפליקציה שצוינה על ידי פרמטר apn (באנדרואיד) או הפרמטרים ibi ו- isi (ב-iOS) תעביר את המשתמשים לחנות Play או 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();
}

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
}

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

מָהִיר

הערה: מוצר 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"));
}

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

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

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

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

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

}

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
)

פיסת הנתונים הנדרשת היחידה כאן היא כתובת האתר, שבלעדיה אינך יכול להזמין משתמשים לאפליקציה שלך. חלקי הנתונים האחרים בנויים בבירור לקראת שליחת מיילים, מה שהופך אותם למעט מביכים במקרים אחרים - כאשר שולחים הזמנה באמצעות הודעת טקסט, הטקסט הנלווה לקישור עשוי להיקרא באופן דומה לנושא דוא"ל, אך בעת שיתוף במדיה חברתית הקישור הנלווה לטקסט עשוי להיות יותר כמו גוף דוא"ל. תצטרך להתנסות עם זה בעצמך כדי למצוא את האיזון הטוב ביותר עבור האפליקציה שלך, ואם אתה לא בטוח, אתה תמיד יכול להשתמש בשירות כמו Remote 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) {
        // ...
    }

}

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

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

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

יתרונות:

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

חסרונות:

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

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

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

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

iOS

ב-iOS, אתה מקבל את הקישור הדינמי על ידי יישום שיטת application:continueUserActivity:restorationHandler: במטפל השחזור, אתה יכול לקבל את הקישור הדינמי על ידי קריאה handleUniversalLink:completion: אם קישור דינמי הועבר לאפליקציה שלך, תוכל לקבל אותו ממאפיין ה- 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: כדי לקבל קישורים דינמיים המועברים לאפליקציה שלך ככתובות URL של סכימה מותאמות אישית. לדוגמה:

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 , תוכל להציג את התוכן המקושר לנמען, או לעבד את הנתונים שצוינו על ידי הפרמטר בדרך אחרת. ספריית ניתוב כתובות אתרים כגון JLRoutes יכולה לעזור במשימה זו.

אם אתה מקבל קישור המיועד לנמען ספציפי, ודא שבטחון ההתאמה של הקישור הדינמי 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
                    // ...
                }
            }
        });

Kotlin+KTX

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

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

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