Catch up on everthing we announced at this year's Firebase Summit. Learn more

เชิญผู้ใช้เข้าสู่แอปของคุณ

วิธีที่มีประสิทธิภาพที่สุดวิธีหนึ่งในการดึงดูดผู้ใช้ใหม่ให้ติดตั้งแอปของคุณคือการอนุญาตให้ผู้ใช้แชร์เนื้อหาจากแอปของคุณกับเพื่อนๆ ด้วยลิงก์แบบไดนามิก คุณสามารถสร้างประสบการณ์การแบ่งปันระหว่างผู้ใช้กับผู้ใช้ที่ยอดเยี่ยม: ผู้ใช้ที่ได้รับคำแนะนำเนื้อหาจากเพื่อนของพวกเขาสามารถคลิกลิงก์และถูกนำไปยังเนื้อหาที่แชร์ในแอปของคุณโดยตรง แม้ว่าพวกเขาจะต้องไปที่แอพ Store หรือ Google Play Store เพื่อติดตั้งแอพของคุณก่อน

ด้วยการรวมความเหนียวของการอ้างอิงผู้ใช้และความคงอยู่ของลิงก์แบบไดนามิก คุณสามารถสร้างคุณสมบัติการแชร์ระหว่างผู้ใช้กับผู้ใช้และการอ้างอิงที่ดึงดูดผู้ใช้ใหม่โดยดึงไปยังเนื้อหาแอปของคุณโดยตรงหรือให้บริการโปรโมชันที่เป็นประโยชน์ร่วมกันกับผู้อ้างอิงและผู้อ้างอิง .

ประโยชน์หลัก

  • ผู้ใช้ใหม่ที่เปิดแอปของคุณเป็นครั้งแรกจะได้รับประสบการณ์ใช้งานครั้งแรกที่ได้รับการปรับแต่งตามบริบทโดยอิงจากสิ่งที่เพื่อนต้องการแชร์กับพวกเขา ตัวอย่างเช่น คุณสามารถแสดงเนื้อหาที่แชร์กับพวกเขา หรือเชื่อมต่อโดยอัตโนมัติกับเพื่อนที่เชิญพวกเขา
  • ทำให้ผู้ใช้สามารถแชร์เนื้อหากับเพื่อน ๆ ผ่านแพลตฟอร์มได้ง่าย ไม่ว่าเพื่อนของพวกเขาจะติดตั้งแอปของคุณหรือไม่

นี่คือวิธีเริ่มต้น!

ตั้งค่าโครงการ Firebase ใหม่ และติดตั้งแบบไดนามิกลิงค์ SDK ใน app ของคุณ

การติดตั้ง SDK ลิงก์แบบไดนามิกช่วยให้ Firebase ส่งต่อข้อมูลเกี่ยวกับลิงก์แบบไดนามิกไปยังแอปได้ รวมถึงหลังจากที่ผู้ใช้ติดตั้งแอป

ตอนนี้ได้เวลาตั้งค่าลิงก์ที่ผู้ใช้สามารถส่งให้เพื่อนได้ ไม่ต้องกังวลหากเพื่อนของผู้ใช้ยังไม่ได้ติดตั้งแอป Dynamic Links สามารถดูแลให้คุณได้

สำหรับองค์ประกอบของเนื้อหาแต่ละคนที่คุณต้องการที่จะแชร์ได้ สร้างการเชื่อมโยงแบบไดนามิก

เมื่อคุณสร้างการเชื่อมโยงแบบไดนามิกคุณจะต้องให้ HTTP หรือ HTTPS URL ที่เป็น link พารามิเตอร์ที่จะใช้ในการระบุเนื้อหาที่คุณแบ่งปันกำลัง หากคุณมีเว็บไซต์ที่มีเนื้อหาเทียบเท่า คุณควรใช้ URL ของเว็บไซต์ของคุณ เพื่อให้แน่ใจว่าลิงก์เหล่านี้แสดงผลอย่างถูกต้องบนแพลตฟอร์มที่ไม่สนับสนุนลิงก์แบบไดนามิก เช่น เบราว์เซอร์เดสก์ท็อป ตัวอย่างเช่น:

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

ก่อนที่คุณจะแบ่งปันการเชื่อมโยงเหล่านี้คุณอาจต้องการใช้ Firebase แบบไดนามิกลิงค์ URL Shortener API เพื่อสร้าง URL ที่เป็นมิตรมอง สั้นลักษณะเชื่อมโยงแบบไดนามิกเช่นตัวอย่างต่อไปนี้:

https://example.page.link/WXYZ

ใดก็ตามที่เชื่อมโยงคุณใช้เมื่อผู้ใช้เปิดการเชื่อมโยงแบบไดนามิกบนอุปกรณ์ของพวกเขาแอปที่ระบุโดย apn พารามิเตอร์ (บน Android) หรือ ibi และ isi พารามิเตอร์ (บน iOS) จะนำผู้ใช้ไปเล่น Store หรือ App Store ในการติดตั้งแอป ถ้ายังไม่ได้ติดตั้ง จากนั้น เมื่อติดตั้งและเปิดแอปแล้ว URL ที่ระบุในพารามิเตอร์ "ลิงก์" จะถูกส่งต่อไปยังแอป

ขั้นแรก ให้ดูตัวอย่างง่ายๆ ของแอปแชทในห้องแชท เช่น แฮงเอาท์ ซึ่งสร้างลิงก์เพื่อเชิญผู้คนเข้าสู่ห้องสนทนา

iOS

chat app screenshotchat app screenshot with share sheet

Android

chat app screenshotchat app screenshot with share sheet

Swift

หมายเหตุ: สินค้า 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
}

วัตถุประสงค์-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
}

เมื่อคุณมีลิงก์แบบไดนามิกแล้ว คุณสามารถเพิ่มปุ่มแชร์ไปยัง UI ของคุณ ซึ่งจะเปิดขั้นตอนการแชร์แพลตฟอร์มมาตรฐาน:

Swift

หมายเหตุ: สินค้า 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)
}

วัตถุประสงค์-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"))
}

ในตัวอย่างนี้ UI การแชร์เริ่มต้นจะแสดงรายการแอปสำหรับการแชร์ลิงก์โดยอัตโนมัติ ดังนั้นจึงเป็นสิ่งที่คุณสามารถตั้งค่าในแอปของคุณเองได้โดยใช้โค้ดเพียงไม่กี่บรรทัด

แทนที่จะให้ผู้ใช้เลือกรายชื่อติดต่อและเขียนข้อความในแอปของคุณ การดำเนินการเหล่านี้จะถูกมอบหมายไปยังแอปที่พวกเขาเลือกจากกล่องโต้ตอบการแชร์ นอกจากนี้ การมอบหมายการแชร์ไปยังแอปอื่นๆ หมายความว่าคุณไม่จำเป็นต้องขอสิทธิ์ในการติดต่อจากผู้ใช้ และอนุญาตให้ผู้ใช้เลือกจากรายการที่อยู่ติดต่อที่ขยายภายในแอปที่เลือก เพื่ออำนวยความสะดวกที่ดีกว่าร่วมกันทางสังคมคุณสามารถ เพิ่มเมตาดาต้าแสดงตัวอย่างสื่อสังคม เพื่อการเชื่อมโยงแบบไดนามิกของคุณที่จะแสดงพร้อมกับการเชื่อมโยงในช่องทางสังคมที่สำคัญ

แม้ว่าบางครั้ง การส่งลิงก์เปล่าโดยไม่มีข้อความก็ไม่เพียงพอสำหรับการอ้างอิงที่น่าสนใจ โดยการแนบลิงก์พร้อมกับข้อความสั้น ๆ และหากเป็นไปได้ การนำเสนอที่สมบูรณ์ยิ่งขึ้น ผู้ใช้สามารถเข้าใจคุณค่าของการแนะนำผลิตภัณฑ์เมื่อได้รับ:

iOS

rewarded referral screenshotrewarded referral screenshot with share sheet

Android

rewarded referral screenshotrewarded referral screenshot with share sheet

แม้ว่าสิ่งนี้จะซับซ้อนกว่าตัวอย่างที่แล้ว แต่วิธีการก็จะเหมือนกันไม่มากก็น้อย บนหน้าจอนี้มีกราฟิกขนาดใหญ่พร้อมคุณค่าของคำเชิญและปุ่มสำหรับการแชร์ไปยังช่องทางโซเชียลที่สำคัญ มีความซ้ำซ้อนในโฟลว์ UI นี้—บางช่องทางการแบ่งปันจะแสดงเป็นรายบุคคล เพื่อให้สามารถกำหนดข้อความเฉพาะของช่องได้มากขึ้น เช่น การเพิ่มหัวเรื่องในการเชิญทางอีเมล ในเมนูเชิญนี้ เรา:

  • นำเสนออีเมล ข้อความ และคัดลอกปุ่มแชร์ลิงก์ และปรับแต่งข้อความให้เหมาะสม อีเมลจะมีหัวเรื่องและสามารถรวมเนื้อหาที่ยาวขึ้นได้ด้วยการขึ้นบรรทัดใหม่ รูปภาพ และช่องว่าง ข้อความควรมีเนื้อหาที่สั้นกว่าโดยมีตัวแบ่งบรรทัด แต่มีช่องว่างเล็กน้อยและไม่มีรูปภาพ และการคัดลอกลิงก์ควรคัดลอกลิงก์และไม่มีอะไรอื่น
  • ใช้ UI การแชร์ของระบบสำหรับทุกอย่าง รวมถึงข้อความเชิญสั้นๆ ที่มาพร้อมกับลิงก์
  • ลิงก์ในรายละเอียดผ่านรูปแบบ URL หรือลิงก์สากลไปยังแอปอื่นที่มีตรรกะพิเศษในการจัดการคำเชิญของแอป การดำเนินการนี้ใช้ไม่ได้นอกความร่วมมือระหว่างองค์กรของคุณกับแอปอื่น และไม่น่าจะเป็นทางเลือกสำหรับองค์กรขนาดเล็ก ที่กล่าวว่าบางแอพอาจบันทึกพฤติกรรมการเชื่อมโยงสากล/ลึกของพวกเขาต่อสาธารณะ เราจะใช้เวอร์ชันจำลองนี้ในตัวอย่างของเรา

ขั้นแรก กำหนดประเภทเนื้อหาการเชิญ ซึ่งจะสรุปเฉพาะข้อมูลในการเชิญและไม่มีฟังก์ชันการทำงาน ด้วยวิธีนี้ คุณสามารถเริ่มต้นด้วยประเภทข้อมูลและคิดถึงโค้ดของคุณในแง่ของการรวมข้อมูลเข้าด้วยกัน

Swift

หมายเหตุ: สินค้า 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

}

วัตถุประสงค์-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
)

ข้อมูลที่จำเป็นเพียงอย่างเดียวที่นี่คือ URL โดยที่คุณจะไม่สามารถเชิญผู้ใช้เข้าสู่แอปของคุณได้ ข้อมูลอื่นๆ มีโครงสร้างที่ชัดเจนในการส่งอีเมล ซึ่งอาจทำให้รู้สึกอึดอัดเล็กน้อยในบางกรณี เมื่อส่งคำเชิญผ่านข้อความ ข้อความแจ้งที่มาพร้อมกับลิงก์อาจอ่านคล้ายกับหัวเรื่องอีเมล แต่เมื่อแชร์บนโซเชียลมีเดีย ลิงก์ที่มาพร้อมกับข้อความอาจดูเหมือนเนื้อหาอีเมลมากกว่า คุณจะต้องทดสอบกับตัวเองนี้เพื่อหาสมดุลที่ดีที่สุดสำหรับแอปของคุณและถ้าคุณไม่แน่ใจว่าคุณสามารถใช้บริการเช่น ระยะไกล Config เพื่อให้คุณสามารถเปลี่ยนค่าข้อความหลังจากการเปิดตัวแอพพลิเค

Swift

หมายเหตุ: สินค้า 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()

}

วัตถุประสงค์-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) {
        // ...
    }
}

ตอนนี้เหลือเพียงเสียบสิ่งนี้เข้ากับองค์ประกอบ UI ที่คุณเลือก สำหรับการดำเนินงานเต็มรูปแบบของการไหลเชิญนี้ดูตัวอย่างบน GitHub สำหรับ iOS และ Android

นี่เป็นวิธีการทั้งหมดในการทำให้ผู้ใช้ของคุณสามารถส่งคำเชิญให้เพื่อนของพวกเขา ซึ่งเป็นวิธีการแก้ปัญหาการเชิญที่ง่ายที่สุด แอพยอดนิยมจำนวนมากยังส่งคำเชิญด้วยการส่งอีเมลผ่านแบ็กเอนด์ของตัวเอง ซึ่งต้องมีการรวมบริการส่งเมล แต่มีข้อดีหลายประการที่ไม่มีให้ แต่มีข้อเสียเพียงเล็กน้อยเท่านั้น

ข้อดี:

  • เปิดใช้งานอีเมลที่มีมาร์กอัปที่ซับซ้อนซึ่งผู้ใช้ของคุณไม่สามารถแก้ไขได้ก่อนส่ง
  • เปิดใช้งานการติดตาม/การวิเคราะห์ที่ละเอียดยิ่งขึ้น (เช่น ส่งความสำเร็จและความล้มเหลวในแบ็กเอนด์ของคุณ)

จุดด้อย:

  • อีเมลมีแนวโน้มที่จะถูกตั้งค่าสถานะว่าเป็นสแปม
  • ต้องมีการรวมเข้ากับบริการส่งอีเมล
  • ต้องมีการอนุญาตผู้ติดต่อในแอป

โดยทั่วไป การส่งคำเชิญผ่านบริการส่งอีเมลของคุณเองจะมอบประสบการณ์การเชิญที่สม่ำเสมอและสมบูรณ์ยิ่งขึ้นด้วยต้นทุนของความเก่งกาจ

เปิดเนื้อหาที่เชื่อมโยงในแอปของคุณ

สุดท้าย คุณต้องได้รับลิงก์ที่ส่งไปยังแอปของคุณ คุณจึงสามารถแสดงเนื้อหาที่เชื่อมโยงไปยังผู้รับได้ ซึ่งทำได้ง่ายโดยใช้ Dynamic Links SDK:

iOS

บน iOS ให้คุณได้รับการเชื่อมโยงแบบไดนามิกโดยการใช้ application:continueUserActivity:restorationHandler: วิธีการ ในการจัดการฟื้นฟูคุณจะได้รับการเชื่อมโยงแบบไดนามิกโดยการเรียก handleUniversalLink:completion: หากมีการเชื่อมโยงแบบไดนามิกที่ถูกส่งผ่านไปยังแอปของคุณคุณจะได้รับมันจาก url ทรัพย์สินของ FIRDynamicLink ตัวอย่างเช่น:

วัตถุประสงค์-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;
      // ...
    }];

Swift

หมายเหตุ: สินค้า 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 ของโครงการที่กำหนดเอง ตัวอย่างเช่น:

วัตถุประสงค์-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;
}

Swift

หมายเหตุ: สินค้า 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 สามารถช่วยให้กับงานนี้

หากคุณได้รับการเชื่อมโยงที่มีไว้สำหรับผู้รับที่เฉพาะเจาะจงให้แน่ใจว่าความเชื่อมั่นของการจับคู่เชื่อมโยงแบบไดนามิกเป็น strong ก่อนที่จะใช้ตรรกะที่ใช้งานที่เฉพาะเจาะจงใด ๆ

Android

บน 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 พารามิเตอร์คุณสามารถแสดงเนื้อหาที่เชื่อมโยงไปยังผู้รับหรือประมวลผลข้อมูลที่ระบุโดยพารามิเตอร์ด้วยวิธีอื่น ไลบรารีการกำหนดเส้นทาง URL สามารถช่วยงานนี้ได้