Firebase इन-ऐप्लिकेशन मैसेज के व्यवहार में बदलाव करें


Firebase की इन-ऐप्लिकेशन मैसेज सुविधा से, कोडिंग किए बिना या बहुत कम कोडिंग करके, उपयोगकर्ता के साथ इंटरैक्शन को बेहतर बनाया जा सकता है. साथ ही, उन्हें टारगेट किया जा सकता है. इसके लिए, Google Analytics की सुविधाओं का इस्तेमाल किया जाता है. इससे मैसेजिंग इवेंट को उपयोगकर्ता की असल विशेषताओं, गतिविधियों, और विकल्पों से जोड़ा जा सकता है. कुछ और Firebase In-App Messaging SDK टूल को इंटिग्रेट करके, इन-ऐप्लिकेशन मैसेज के व्यवहार को और भी बेहतर बनाया जा सकता है. इससे, उपयोगकर्ता के मैसेज के साथ इंटरैक्ट करने पर जवाब दिया जा सकता है. साथ ही, Analytics फ़्रेमवर्क के बाहर मैसेज इवेंट ट्रिगर किए जा सकते हैं. इसके अलावा, उपयोगकर्ताओं को मैसेजिंग इंटरैक्शन से जुड़े अपने निजी डेटा को शेयर करने पर कंट्रोल दिया जा सकता है.

उपयोगकर्ताओं के इन-ऐप्लिकेशन मैसेज के साथ इंटरैक्ट करने पर जवाब देना

कार्रवाइयों की मदद से, इन-ऐप्लिकेशन मैसेज का इस्तेमाल करके, उपयोगकर्ताओं को किसी वेबसाइट या आपके ऐप्लिकेशन की किसी खास स्क्रीन पर भेजा जा सकता है.

आपका कोड, सामान्य इंटरैक्शन (क्लिक और खारिज करना), इंप्रेशन (आपके मैसेज के पुष्टि किए गए व्यू), और SDK टूल से लॉग और पुष्टि की गई गड़बड़ियों के जवाब दे सकता है. उदाहरण के लिए, अगर आपका मैसेज कार्ड के तौर पर दिखता है, तो आपको यह ट्रैक करना पड़ सकता है कि उपयोगकर्ता ने कार्ड पर मौजूद किन दो यूआरएल पर क्लिक किया है.

कार्ड इंटरैक्शन को मैनेज करने के लिए, DisplayDelegate लागू करना

इन-ऐप्लिकेशन मैसेज के लिए, डिसप्ले डेलिगेट रजिस्टर किया जा सकता है. इन-ऐप्लिकेशन मैसेज के साथ इंटरैक्शन होने पर, इसे कॉल किया जाएगा. इसके लिए, InAppMessagingDisplayDelegate प्रोटोकॉल के हिसाब से एक क्लास लागू करें और इसे InAppMessaging इंस्टेंस पर डेलिगेट प्रॉपर्टी के तौर पर सेट करें.

मान लें कि आपको यह ट्रैक करना है कि उपयोगकर्ता ने कार्ड-स्टाइल वाले मैसेज में किस लिंक पर क्लिक किया है. इसके लिए, एक ऐसी क्लास तय करें जो DisplayDelegate प्रोटोकॉल के हिसाब से messageClicked तरीका लागू करती है. इससे आपको उपयोगकर्ता के क्लिक किए गए लिंक का ऐक्सेस मिलता है.

Swift

ध्यान दें: यह प्रॉडक्ट, macOS, Mac Catalyst, App Clip या watchOS टारगेट पर उपलब्ध नहीं है.

कॉल बैक के उन तरीकों और उनके पैरामीटर के बारे में जानने के लिए, Swift डिसप्ले डेलिगेट का रेफ़रंस देखें जिन्हें लागू किया जा सकता है. इसमें InAppMessagingAction भी शामिल है.


// In CardActionFiamDelegate.swift
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {

    func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
        // ...
    }

    func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,
                          dismissType: InAppMessagingDismissType) {
        // ...
    }

    func impressionDetected(for inAppMessage: InAppMessagingDisplayMessage) {
        // ...
    }

    func displayError(for inAppMessage: InAppMessagingDisplayMessage, error: Error) {
        // ...
    }

}

// In AppDelegate.swift
// Register the delegate with the InAppMessaging instance
let myFiamDelegate = CardActionFiamDelegate()
InAppMessaging.inAppMessaging().delegate = myFiamDelegate;

Objective-C

ध्यान दें: यह प्रॉडक्ट, macOS, Mac Catalyst, App Clip या watchOS टारगेट पर उपलब्ध नहीं है.

कॉल बैक के उन तरीकों और उनके पैरामीटर के बारे में जानने के लिए, Objective-C डिसप्ले डेलिगेट का रेफ़रंस देखें जिन्हें लागू किया जा सकता है. इसमें FIRInAppMessagingDisplayMessage भी शामिल है.


// In CardActionFiamDelegate.h
@interface CardActionFiamDelegate : NSObject <FIRInAppMessagingDisplayDelegate>
@end

// In CardActionFiamDelegate.m
@implementation CardActionFiamDelegate

- (void)displayErrorForMessage:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage
                         error:(nonnull NSError *)error {
    // ...
}

- (void)impressionDetectedForMessage:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
    // ...
}

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
    // ...
}

- (void)messageDismissed:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage
             dismissType:(FIRInAppMessagingDismissType)dismissType {
    // ...
}

@end

// In AppDelegate.m
CardActionFiamDelegate *myFiamDelegate = [CardActionFiamDelegate new];
[FIRInAppMessaging inAppMessaging].delegate = myFiamDelegate;

प्रोग्राम के ज़रिए इन-ऐप्लिकेशन मैसेज ट्रिगर करना

Firebase In-App Messaging की सुविधा से, Google Analytics for Firebase इवेंट के साथ इन-ऐप्लिकेशन मैसेज ट्रिगर किए जा सकते हैं. इसके लिए, किसी अतिरिक्त इंटिग्रेशन की ज़रूरत नहीं होती. Firebase In-App Messaging SDK टूल के प्रोग्राम के ज़रिए ट्रिगर की मदद से, इवेंट को मैन्युअल तरीके से भी ट्रिगर किया जा सकता है.

इन-ऐप्लिकेशन मैसेज के कैंपेन कंपोज़र में, नया कैंपेन बनाएं या कोई मौजूदा कैंपेन चुनें. इसके बाद, कंपोज़र के वर्कफ़्लो के शेड्यूलिंग चरण में, नए या मौजूदा मैसेजिंग इवेंट का इवेंट आईडी नोट करें. आईडी नोट करने के बाद, अपने ऐप्लिकेशन को उसके आईडी से इवेंट ट्रिगर करने के लिए इंस्ट्रूमेंट करें.

Swift

ध्यान दें: यह प्रॉडक्ट, macOS, Mac Catalyst, App Clip या watchOS टारगेट पर उपलब्ध नहीं है.

// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");

Objective-C

ध्यान दें: यह प्रॉडक्ट, macOS, Mac Catalyst, App Clip या watchOS टारगेट पर उपलब्ध नहीं है.

// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];

कैंपेन के कस्टम मेटाडेटा का इस्तेमाल करना

अपने कैंपेन में, कुंजी/वैल्यू के जोड़े की सीरीज़ में कस्टम डेटा तय किया जा सकता है. जब उपयोगकर्ता मैसेज के साथ इंटरैक्ट करते हैं, तो यह डेटा आपके लिए उपलब्ध होता है. उदाहरण के लिए, प्रोमो कोड दिखाया जा सकता है.

Swift

ध्यान दें: यह प्रॉडक्ट, macOS, Mac Catalyst, App Clip या watchOS टारगेट पर उपलब्ध नहीं है.
class CardActionDelegate : NSObject, InAppMessagingDisplayDelegate {

    func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
	// Get data bundle from the inapp message
	let appData = inAppMessage.appData
	// ...
    }
}

Objective-C

ध्यान दें: यह प्रॉडक्ट, macOS, Mac Catalyst, App Clip या watchOS टारगेट पर उपलब्ध नहीं है.
@implementation ExampleCardActionDelegate

- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
    NSDictionary *appData = inAppMessage.appData;
    NSLog(@"Message data: %@", appData);
	// ...
}

@end

इन-ऐप्लिकेशन मैसेज को कुछ समय के लिए बंद करना

डिफ़ॉल्ट रूप से, Firebase In-App Messaging ट्रिगर करने की शर्त पूरी होने पर मैसेज दिखाता है. भले ही, ऐप्लिकेशन की मौजूदा स्थिति कुछ भी हो. अगर आपको किसी वजह से मैसेज दिखाने की सुविधा बंद करनी है, तो SDK टूल की messageDisplaySuppressed प्रॉपर्टी का इस्तेमाल किया जा सकता है. Objective-C में इसका उदाहरण यहां दिया गया है:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

प्रॉपर्टी को YES पर सेट करने पर, Firebase In-App Messaging मैसेज नहीं दिखाएगा. वहीं, NO पर सेट करने पर, मैसेज दिखाने की सुविधा फिर से चालू हो जाएगी. ऐप्लिकेशन रीस्टार्ट होने पर, SDK टूल, प्रॉपर्टी को NO पर रीसेट कर देता है. SDK टूल, बंद किए गए मैसेज को अनदेखा कर देता है. Firebase In-App Messaging दिखाने के लिए, बंद किए गए मैसेज की ट्रिगर करने की शर्तों को फिर से पूरा करना होगा.

ऑप्ट-आउट करने वाले उपयोगकर्ताओं को मैसेज भेजने की सुविधा चालू करना

डिफ़ॉल्ट रूप से, Firebase In-App Messaging मैसेजिंग कैंपेन में टारगेट किए गए सभी ऐप्लिकेशन उपयोगकर्ताओं को अपने-आप मैसेज भेजता है. इन मैसेज को भेजने के लिए, Firebase In-App Messaging SDK टूल, Firebase इंस्टॉलेशन आईडी का इस्तेमाल करता है. इसका मतलब है कि In-App Messaging को, इंस्टॉलेशन आईडी से लिंक किया गया क्लाइंट डेटा, Firebase के सर्वर पर भेजना होगा. अगर आपको उपयोगकर्ताओं को उनके भेजे गए डेटा पर ज़्यादा कंट्रोल देना है, तो डेटा के अपने-आप इकट्ठा होने की सुविधा बंद करें और उन्हें डेटा शेयर करने की मंज़ूरी देने का विकल्प दें.

इसके लिए, आपको Firebase In-App Messaging के लिए, अपने-आप शुरू होने की सुविधा बंद करनी होगी. साथ ही, ऑप्ट-इन करने वाले उपयोगकर्ताओं के लिए, सेवा को मैन्युअल तरीके से शुरू करना होगा:

  1. अपनी Info.plist फ़ाइल में नई कुंजी का इस्तेमाल करके, अपने-आप शुरू होने की सुविधा बंद करें:

    • कुंजी: FirebaseInAppMessagingAutomaticDataCollectionEnabled
    • वैल्यू: NO
  2. चुने गए उपयोगकर्ताओं के लिए, Firebase In-App Messaging को मैन्युअल तरीके से शुरू करें:

    // Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO
    // in Info.plist
    [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;
    
    

    automaticDataCollectionEnabled को YES पर सेट करने के बाद, ऐप्लिकेशन रीस्टार्ट होने पर भी वैल्यू बनी रहती है. साथ ही, यह आपकी Info.plist में मौजूद वैल्यू को बदल देती है. अगर आपको शुरू होने की सुविधा को फिर से बंद करना है, तो प्रॉपर्टी को NO पर सेट करें. उदाहरण के लिए, अगर कोई उपयोगकर्ता बाद में डेटा इकट्ठा करने की सुविधा से ऑप्ट आउट करता है, तो इस तरीके का इस्तेमाल किया जा सकता है.