Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

अपने ऐप की सामग्री साझा करने के लिए उपयोगकर्ताओं को सक्षम करके अपने ऐप के लिए नए उपयोगकर्ता प्राप्त करें

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

नए उपयोगकर्ताओं को अपना ऐप इंस्टॉल करने के लिए सबसे प्रभावी तरीकों में से एक है अपने उपयोगकर्ताओं को अपने ऐप से सामग्री को अपने दोस्तों के साथ साझा करने के लिए सक्षम करना। डायनेमिक लिंक के साथ, आप एक महान उपयोगकर्ता-से-उपयोगकर्ता साझाकरण अनुभव बना सकते हैं: जो उपयोगकर्ता अपने मित्रों से सामग्री अनुशंसाएं प्राप्त करते हैं, वे एक लिंक पर क्लिक कर सकते हैं और सीधे आपके ऐप में साझा की गई सामग्री पर ले जाया जा सकता है, भले ही उन्हें ऐप पर जाना पड़े सबसे पहले अपना ऐप इंस्टॉल करने के लिए स्टोर या गूगल प्ले स्टोर पर जाएं।

उपयोगकर्ता रेफ़रल की चिपचिपाहट और डायनामिक लिंक की दृढ़ता को मिलाकर, आप उपयोगकर्ता-से-उपयोगकर्ता साझाकरण और रेफ़रल सुविधाएं बना सकते हैं जो नए उपयोगकर्ताओं को सीधे आपके ऐप की सामग्री पर आकर्षित करके या ऐसे प्रचारों की सेवा कर सकते हैं जो रेफ़रलकर्ता और संदर्भित को पारस्परिक रूप से लाभान्वित करते हैं .

प्रमुख लाभ

  • आपके ऐप को पहली बार खोलने वाले नए उपयोगकर्ताओं को एक कस्टमाइज़्ड फर्स्ट-रन अनुभव प्राप्त होता है, जिसे उनके मित्र उनके साथ साझा करना चाहते थे, उसके आधार पर प्रासंगिक होता है। उदाहरण के लिए, आप उनके साथ साझा की गई सामग्री प्रदर्शित कर सकते हैं, या उन्हें स्वचालित रूप से उस मित्र से जोड़ सकते हैं जिसने उन्हें आमंत्रित किया था।
  • उपयोगकर्ताओं के लिए प्लेटफ़ॉर्म पर अपने दोस्तों के साथ सामग्री साझा करना आसान बनाता है चाहे उनके दोस्तों ने आपका ऐप इंस्टॉल किया हो या नहीं।

यहां बताया गया है कि शुरुआत कैसे करें!

एक नया फायरबेस प्रोजेक्ट सेट करें और अपने ऐप में डायनामिक लिंक एसडीके इंस्टॉल करें।

डायनामिक लिंक एसडीके स्थापित करने से फायरबेस ऐप को डायनामिक लिंक के बारे में डेटा पास करने की अनुमति देता है, जिसमें उपयोगकर्ता द्वारा ऐप इंस्टॉल करने के बाद भी शामिल है।

अब उन लिंक्स को सेट करने का समय आ गया है जिन्हें उपयोगकर्ता अपने दोस्तों को भेज सकते हैं। यदि आपके उपयोगकर्ताओं के मित्रों के पास अभी तक ऐप इंस्टॉल नहीं है, तो चिंता न करें; डायनेमिक लिंक आपके लिए इसका ख्याल रख सकते हैं।

सामग्री के प्रत्येक तत्व के लिए जिसे आप साझा करने योग्य बनाना चाहते हैं, एक डायनामिक लिंक बनाएं

जब आप डायनामिक लिंक बनाते हैं, तो आपको link पैरामीटर के रूप में एक HTTP या HTTPS URL प्रदान करना होगा जिसका उपयोग आपके द्वारा साझा की जा रही सामग्री की पहचान करने के लिए किया जाएगा। यदि आपके पास समान सामग्री वाली वेबसाइट है, तो आपको अपनी वेबसाइट के URL का उपयोग करना चाहिए। यह सुनिश्चित करेगा कि ये लिंक एक ऐसे प्लेटफॉर्म पर सही ढंग से प्रस्तुत होते हैं जो डायनामिक लिंक का समर्थन नहीं करता है, जैसे कि डेस्कटॉप ब्राउज़र। उदाहरण के लिए:

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

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

इन लिंक को साझा करने से पहले, आप मित्रवत दिखने वाले URL जेनरेट करने के लिए Firebase डायनेमिक लिंक URL शॉर्टनर API का उपयोग करना चाह सकते हैं। एक छोटा डायनामिक लिंक निम्न उदाहरण जैसा दिखता है:

https://example.page.link/WXYZ

आप जिस भी लिंक का उपयोग करते हैं, जब उपयोगकर्ता अपने डिवाइस पर डायनामिक लिंक खोलते हैं, तो apn पैरामीटर (एंड्रॉइड पर) या ibi और isi पैरामीटर (आईओएस पर) द्वारा निर्दिष्ट ऐप उपयोगकर्ताओं को ऐप इंस्टॉल करने के लिए प्ले स्टोर या ऐप स्टोर पर ले जाएगा। अगर यह पहले से स्थापित नहीं है। फिर, जब ऐप इंस्टॉल और खोला जाता है, तो 'लिंक' पैरामीटर में निर्दिष्ट यूआरएल ऐप को पास हो जाता है।

सबसे पहले, Hangouts जैसे रूम-आधारित चैट ऐप के इस सरल उदाहरण पर एक नज़र डालें जो लोगों को चैट रूम में आमंत्रित करने के लिए लिंक उत्पन्न करता है।

आईओएस

chat app screenshotchat app screenshot with share sheet

एंड्रॉयड

chat app screenshotchat app screenshot with share sheet

तीव्र

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, 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
}

उद्देश्य सी

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, 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 में एक शेयर बटन जोड़ सकते हैं जो मानक प्लेटफ़ॉर्म साझाकरण प्रवाह लॉन्च करेगा:

तीव्र

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, 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)
}

उद्देश्य सी

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, 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 स्वचालित रूप से लिंक साझा करने के लिए ऐप्स की एक सूची प्रस्तुत करता है, इसलिए यह कुछ ऐसा है जिसे आप कोड की कुछ पंक्तियों के साथ अपने स्वयं के ऐप में सेट कर सकते हैं।

उपयोगकर्ता को संपर्कों का चयन करने और आपके ऐप में संदेश लिखने के बजाय, इन क्रियाओं को उस ऐप को सौंप दिया जाता है जिसे वे साझा संवाद से चुनते हैं। इसके अतिरिक्त, अन्य ऐप्स को साझाकरण सौंपने का मतलब है कि आपको उपयोगकर्ता से संपर्क अनुमतियों के लिए पूछने की ज़रूरत नहीं है और उपयोगकर्ताओं को उनके चुने हुए ऐप के भीतर एक विस्तारित संपर्क सूची से चयन करने की अनुमति देता है। सामाजिक साझाकरण को बेहतर ढंग से सुविधाजनक बनाने के लिए, आप अपने डायनामिक लिंक में सोशल मीडिया पूर्वावलोकन मेटाडेटा जोड़ सकते हैं जो प्रमुख सामाजिक चैनलों में लिंक के साथ प्रदर्शित होगा।

कभी-कभी, हालांकि, बिना किसी पाठ के केवल एक लिंक भेजना एक सम्मोहक रेफरल के लिए पर्याप्त नहीं है। एक संक्षिप्त संदेश के साथ लिंक के साथ और, यदि संभव हो तो, एक समृद्ध प्रस्तुतिकरण, उपयोगकर्ता रेफ़रल के मूल्य प्रस्ताव को समझ सकते हैं जब वे इसे प्राप्त करते हैं:

आईओएस

rewarded referral screenshotrewarded referral screenshot with share sheet

एंड्रॉयड

rewarded referral screenshotrewarded referral screenshot with share sheet

हालांकि यह पिछले उदाहरण की तुलना में अधिक जटिल है, दृष्टिकोण कमोबेश एक जैसा ही होगा। इस स्क्रीन पर आमंत्रण के मूल्य प्रस्ताव और प्रमुख सामाजिक चैनलों पर साझा करने के लिए बटन के साथ एक बड़ा ग्राफिक है। इस UI प्रवाह में कुछ अतिरेक है—कुछ साझाकरण चैनल व्यक्तिगत रूप से अधिक चैनल-विशिष्ट संदेश अनुकूलन की अनुमति देने के लिए प्रस्तुत किए जाते हैं, जैसे ईमेल आमंत्रणों में विषय पंक्ति जोड़ना। इस आमंत्रण मेनू में, हम:

  • ईमेल, टेक्स्ट संदेश, और कॉपी लिंक शेयर बटन प्रस्तुत करें, और उनके संदेशों को उचित रूप से अनुकूलित करें। ईमेल में एक विषय शामिल होगा और इसमें लाइन ब्रेक, इमेज और व्हाइटस्पेस के साथ एक लंबा बॉडी शामिल हो सकता है; टेक्स्ट में लाइन ब्रेक के साथ एक छोटा शरीर शामिल होना चाहिए लेकिन थोड़ा खाली स्थान और कोई चित्र नहीं होना चाहिए; और लिंक कॉपी करना सिर्फ लिंक को कॉपी करना चाहिए और कुछ नहीं।
  • लिंक के साथ आने के लिए एक संक्षिप्त आमंत्रण संदेश सहित अन्य सभी चीज़ों के लिए सिस्टम शेयर UI का उपयोग करें।
  • यूआरएल योजना के माध्यम से डीप लिंक या किसी अन्य ऐप के लिए यूनिवर्सल लिंक जिसमें आपके ऐप के आमंत्रणों को संभालने के लिए विशेष तर्क है। यह आपके संगठन और अन्य ऐप के बीच साझेदारी के बाहर काम नहीं करेगा, और संभवत: छोटे संगठनों के लिए एक विकल्प नहीं है। उस ने कहा, कुछ ऐप्स सार्वजनिक रूप से अपने सार्वभौमिक/डीप लिंकिंग व्यवहार को दस्तावेज कर सकते हैं। हम अपने नमूने में इसका एक डमी संस्करण लागू करेंगे।

सबसे पहले, एक आमंत्रण सामग्री प्रकार परिभाषित करें, जो आमंत्रण में केवल जानकारी को समाहित करता है और इसमें कोई कार्यक्षमता नहीं होती है। इस तरह, आप डेटा प्रकारों से शुरू कर सकते हैं और अपने कोड के बारे में सोच सकते हैं कि यह उस डेटा को एक साथ कैसे जोड़ता है।

तीव्र

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, 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

}

उद्देश्य सी

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, 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
)

यहां डेटा का एकमात्र आवश्यक हिस्सा यूआरएल है, जिसके बिना आप उपयोगकर्ताओं को अपने ऐप पर आमंत्रित करने में असमर्थ हैं। डेटा के अन्य टुकड़े ईमेल भेजने के लिए स्पष्ट रूप से संरचित हैं, जो उन्हें कुछ अन्य मामलों में थोड़ा अजीब बनाता है--पाठ पर आमंत्रण भेजते समय, लिंक के साथ ब्लर्ब एक ईमेल विषय के समान ही पढ़ा जा सकता है, लेकिन सोशल मीडिया पर साझा करते समय पाठ के साथ लिंक ईमेल के मुख्य भाग की तरह हो सकता है। आपको अपने ऐप के लिए सर्वोत्तम संतुलन खोजने के लिए स्वयं इसका प्रयोग करना होगा, और यदि आप अनिश्चित हैं, तो आप ऐप लॉन्च के बाद टेक्स्ट मानों को बदलने की अनुमति देने के लिए रिमोट कॉन्फिग जैसी सेवा का उपयोग कर सकते हैं।

तीव्र

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, 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()

}

उद्देश्य सी

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, 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 घटक में प्लग करें। इस आमंत्रण प्रवाह के पूर्ण कार्यान्वयन के लिए, iOS और Android के लिए GitHub पर नमूने देखें।

आपके उपयोगकर्ताओं को अपने मित्रों को आमंत्रण भेजने में सक्षम बनाने के लिए ये सभी तरीके हैं, जो सबसे हल्का आमंत्रण समाधान है। कई लोकप्रिय ऐप अपने स्वयं के बैकएंड के माध्यम से ईमेल भेजकर भी निमंत्रण देते हैं, जिसके लिए मेल भेजने वाली सेवा को एकीकृत करने की आवश्यकता होती है, लेकिन कई लाभ प्रदान करते हैं जो अन्यथा केवल कुछ छोटी कमियों के साथ उपलब्ध नहीं होते हैं।

पेशेवरों:

  • जटिल मार्कअप वाले ईमेल सक्षम करता है जिन्हें भेजने से पहले आपके उपयोगकर्ता द्वारा संशोधित नहीं किया जा सकता है।
  • अधिक विस्तृत ट्रैकिंग/विश्लेषिकी सक्षम करता है (अर्थात आपके बैकएंड पर सफलताओं और विफलताओं को भेजें)।

दोष:

  • ईमेल के स्पैम के रूप में फ़्लैग किए जाने की अधिक संभावना
  • ईमेल वितरण सेवा के साथ एकीकरण की आवश्यकता है
  • इन-ऐप संपर्क अनुमतियों की आवश्यकता है

आम तौर पर, अपनी खुद की ईमेल डिलीवरी सेवा के माध्यम से निमंत्रण भेजना बहुमुखी प्रतिभा की कीमत पर एक अधिक सुसंगत और संभावित रूप से समृद्ध निमंत्रण अनुभव प्रदान करता है।

लिंक की गई सामग्री को अपने ऐप्लिकेशन में खोलें

अंत में, आपको वह लिंक प्राप्त करने की आवश्यकता है जो आपके ऐप को दिया गया है ताकि आप प्राप्तकर्ता को लिंक की गई सामग्री प्रदर्शित कर सकें। डायनेमिक लिंक एसडीके का उपयोग करना आसान है:

आईओएस

आईओएस पर, आप application:continueUserActivity:restorationHandler: विधि। बहाली हैंडलर में, आप हैंडल handleUniversalLink:completion: को कॉल करके डायनामिक लिंक प्राप्त कर सकते हैं। यदि आपके ऐप को एक डायनामिक लिंक पास किया गया था, तो आप इसे FIRDynamicLink की url प्रॉपर्टी से प्राप्त कर सकते हैं। उदाहरण के लिए:

उद्देश्य सी

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, tvOS, या watchOS लक्ष्यों पर उपलब्ध नहीं है।
[[FIRDynamicLinks dynamicLinks]
    handleUniversalLink:userActivity.webpageURL
             completion:^(FIRDynamicLink * _Nullable dynamicLink,
                          NSError * _Nullable error) {
      NSString *link = dynamicLink.url;
      BOOL strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong;
      // ...
    }];

तीव्र

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, tvOS, या watchOS लक्ष्यों पर उपलब्ध नहीं है।
FIRDynamicLinks.dynamicLinks()?.handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
    let link = dynamicLink.url
    let strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong
    // ...
}

इसके अतिरिक्त, आपको dynamicLinkFromCustomSchemeURL: application:openURL:options: कस्टम स्कीम यूआरएल के रूप में आपके ऐप को दिए गए डायनामिक लिंक प्राप्त करने की विधि। उदाहरण के लिए:

उद्देश्य सी

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, tvOS, या watchOS लक्ष्यों पर उपलब्ध नहीं है।
FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
if (dynamicLink) {
  NSString *link = dynamicLink.url;
  BOOL strongMatch = dynamicLink.matchConfidence == FIRDynamicLinkMatchConfidenceStrong;
  // ...
  return YES;
}

तीव्र

नोट: यह फायरबेस उत्पाद macOS, Mac उत्प्रेरक, 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 जैसी URL-रूटिंग लाइब्रेरी इस कार्य में मदद कर सकती है।

यदि आप किसी विशिष्ट प्राप्तकर्ता के लिए एक लिंक प्राप्त कर रहे हैं, तो सुनिश्चित करें कि किसी भी उपयोगकर्ता-विशिष्ट तर्क को चलाने से पहले डायनामिक लिंक का मिलान आत्मविश्वास 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 पैरामीटर का मान है, तो आप प्राप्तकर्ता को लिंक की गई सामग्री प्रदर्शित कर सकते हैं, या पैरामीटर द्वारा निर्दिष्ट डेटा को किसी अन्य तरीके से संसाधित कर सकते हैं। एक यूआरएल-रूटिंग लाइब्रेरी इस काम में मदद कर सकती है।