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


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

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

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

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

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

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

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

Swift

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

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


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

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

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

    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, ऐप्लिकेशन क्लिप या 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 की मदद से, डिफ़ॉल्ट रूप से Firebase के लिए Google Analytics इवेंट की मदद से इन-ऐप्लिकेशन मैसेज ट्रिगर किए जा सकते हैं. इसके लिए, किसी अन्य इंटिग्रेशन की ज़रूरत नहीं होती. Firebase In-App Messaging SDK टूल के प्रोग्रामैटिक ट्रिगर की मदद से, प्रोग्राम के हिसाब से इवेंट को मैन्युअल तरीके से भी ट्रिगर किया जा सकता है.

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

Swift

ध्यान दें: यह प्रॉडक्ट, macOS, Mac Catalyst, ऐप्लिकेशन क्लिप या 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, ऐप्लिकेशन क्लिप या watchOS टारगेट पर उपलब्ध नहीं है.
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {

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

Objective-C

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

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

@end

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

डिफ़ॉल्ट रूप से, Firebase In-App Messaging, ट्रिगर करने की शर्त पूरी होने पर मैसेज रेंडर करता है. भले ही, ऐप्लिकेशन की मौजूदा स्थिति कुछ भी हो. अगर आपको किसी वजह से मैसेज नहीं दिखाना है, तो एसडीके की 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 पर सेट करें. उदाहरण के लिए, अगर कोई उपयोगकर्ता बाद में डेटा इकट्ठा करने की सुविधा से ऑप्ट आउट करता है.