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

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

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

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

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

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

ตั้งค่าโปรเจ็กต์ Firebase ใหม่ และติดตั้ง Dynamic Links SDK ในแอปของคุณ

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

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

สำหรับแต่ละองค์ประกอบของเนื้อหาที่คุณต้องการแชร์ได้ ให้ สร้าง Dynamic Link

เมื่อคุณสร้างลิงก์แบบไดนามิก คุณจะต้องระบุ URL ของ HTTP หรือ HTTPS เป็นพารามิเตอร์ 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 Dynamic Links URL shortener API เพื่อสร้าง URL ที่ดูเป็นมิตร Dynamic Link แบบสั้นจะดูเหมือนตัวอย่างต่อไปนี้:

https://example.page.link/WXYZ

ไม่ว่าคุณจะใช้ลิงก์ใด เมื่อผู้ใช้เปิด Dynamic Link บนอุปกรณ์ แอปที่ระบุโดยพารามิเตอร์ apn (บน Android) หรือพารามิเตอร์ ibi และ isi (บน iOS) จะนำผู้ใช้ไปที่ Play 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();
}

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
}

เมื่อคุณมีลิงก์แบบไดนามิกแล้ว คุณสามารถเพิ่มปุ่มแชร์ไปยัง 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"));
}

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

ในตัวอย่างนี้ 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) {
        // ...
    }

}

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
)

ข้อมูลที่จำเป็นเพียงอย่างเดียวที่นี่คือ URL โดยที่คุณจะไม่สามารถเชิญผู้ใช้เข้าสู่แอปของคุณได้ ข้อมูลอื่นๆ มีโครงสร้างที่ชัดเจนในการส่งอีเมล ซึ่งอาจทำให้รู้สึกอึดอัดเล็กน้อยในบางกรณี เมื่อส่งคำเชิญผ่านข้อความ ข้อความแจ้งที่มาพร้อมกับลิงก์อาจอ่านคล้ายกับหัวเรื่องอีเมล แต่เมื่อแชร์บนโซเชียลมีเดีย ลิงก์ที่มาพร้อมกับข้อความอาจดูเหมือนเนื้อหาอีเมลมากกว่า คุณจะต้องทดลองด้วยตัวเองเพื่อหาจุดสมดุลที่ดีที่สุดสำหรับแอปของคุณ และหากไม่แน่ใจ คุณสามารถใช้บริการต่างๆ เช่น Remote 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) {
        // ...
    }

}

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

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

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

ข้อดี:

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

จุดด้อย:

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

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

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

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

iOS

บน iOS คุณได้รับลิงก์แบบไดนามิกโดยใช้เมธอด application:continueUserActivity:restorationHandler: ในตัวจัดการการคืนค่า คุณสามารถรับ Dynamic Link ได้โดยเรียก 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() เพื่อรับข้อมูลจาก Dynamic Link:

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