ফায়ারবেস ইন-অ্যাপ মেসেজিং বার্তাগুলির আচরণ পরিবর্তন করুন


খুব সামান্য বা কোনো কোডিং প্রচেষ্টা ছাড়াই, ফায়ারবেস ইন-অ্যাপ মেসেজিং আপনাকে সমৃদ্ধ ব্যবহারকারী ইন্টারঅ্যাকশন তৈরি, কনফিগার এবং টার্গেট করার সুযোগ দেয়। এটি Google Analytics -এর বিল্ট-ইন সক্ষমতা ব্যবহার করে মেসেজিং ইভেন্টগুলোকে ব্যবহারকারীর প্রকৃত বৈশিষ্ট্য, কার্যকলাপ এবং পছন্দের সাথে সংযুক্ত করে। কিছু অতিরিক্ত Firebase In-App Messaging SDK ইন্টিগ্রেশনের মাধ্যমে, আপনি ইন-অ্যাপ মেসেজের আচরণকে আরও ভালোভাবে নিয়ন্ত্রণ করতে পারেন; যেমন—ব্যবহারকারীরা মেসেজের সাথে ইন্টারঅ্যাক্ট করলে সাড়া দেওয়া, Analytics ফ্রেমওয়ার্কের বাইরে মেসেজ ইভেন্ট ট্রিগার করা এবং মেসেজিং ইন্টারঅ্যাকশন সম্পর্কিত ব্যক্তিগত ডেটা শেয়ার করার উপর ব্যবহারকারীদের নিয়ন্ত্রণ প্রদান করা।

ব্যবহারকারীরা অ্যাপের ভেতরের মেসেজের সাথে ইন্টারঅ্যাক্ট করলে প্রতিক্রিয়া জানান।

অ্যাকশনের মাধ্যমে আপনি আপনার অ্যাপের ভেতরের মেসেজ ব্যবহার করে ব্যবহারকারীদের কোনো ওয়েবসাইটে বা অ্যাপের কোনো নির্দিষ্ট স্ক্রিনে নিয়ে যেতে পারেন।

আপনার কোড সাধারণ ইন্টারঅ্যাকশন (ক্লিক এবং বাতিল), ইম্প্রেশন (আপনার মেসেজের যাচাইকৃত ভিউ) এবং SDK দ্বারা লগ করা ও নিশ্চিত করা ত্রুটি প্রদর্শনে সাড়া দিতে পারে। উদাহরণস্বরূপ, যখন আপনার মেসেজটি একটি কার্ড মোডাল হিসাবে তৈরি করা হয়, তখন আপনি ট্র্যাক করতে এবং ফলো-আপ করতে চাইতে পারেন যে ব্যবহারকারী কার্ডটিতে থাকা দুটি URL-এর মধ্যে কোনটিতে ক্লিক করেছেন।

কার্ডের সাথে ইন্টারঅ্যাকশন পরিচালনা করার জন্য একটি DisplayDelegate প্রয়োগ করুন।

আপনি একটি ইন-অ্যাপ মেসেজিং ডিসপ্লে ডেলিগেট রেজিস্টার করতে পারেন, যা কোনো ইন-অ্যাপ মেসেজের সাথে যেকোনো ইন্টারঅ্যাকশনের সময় কল করা হবে। এটি করার জন্য, InAppMessagingDisplayDelegate প্রোটোকল অনুযায়ী একটি ক্লাস ইমপ্লিমেন্ট করুন এবং এটিকে InAppMessaging ইনস্ট্যান্সের ডেলিগেট প্রপার্টি হিসেবে সেট করুন।

আবারও ধরে নিচ্ছি যে আপনি ট্র্যাক করতে চান কোনো ব্যবহারকারী একটি কার্ড-স্টাইলের মেসেজে কোন লিঙ্কে ক্লিক করেছেন। সেক্ষেত্রে, DisplayDelegate প্রোটোকল অনুযায়ী messageClicked মেথডটি ইমপ্লিমেন্ট করে এমন একটি ক্লাস সংজ্ঞায়িত করুন, যার মাধ্যমে আপনি ব্যবহারকারীর ক্লিক করা লিঙ্কটিতে অ্যাক্সেস পাবেন।

সুইফট

দ্রষ্টব্য: এই পণ্যটি macOS, Mac Catalyst, App Clip বা watchOS-এ উপলব্ধ নয়।

যেসব কলব্যাক মেথড প্রয়োগ করা যায় এবং তাদের প্যারামিটার, যার মধ্যে 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;

উদ্দেশ্য-সি

দ্রষ্টব্য: এই পণ্যটি macOS, Mac Catalyst, App Clip বা watchOS-এ উপলব্ধ নয়।

যেসব কলব্যাক মেথড ইমপ্লিমেন্ট করা যায় এবং তাদের প্যারামিটার, যার মধ্যে FIRInAppMessagingDisplayMessage অন্তর্ভুক্ত, সেগুলোর জন্য Objective-C ডিসপ্লে ডেলিগেট রেফারেন্স দেখুন।


// 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 In-App Messaging SDK-এর প্রোগ্রাম্যাটিক ট্রিগার ব্যবহার করে ম্যানুয়ালি প্রোগ্রাম্যাটিক উপায়ে ইভেন্ট ট্রিগার করতে পারেন।

ইন-অ্যাপ মেসেজিং ক্যাম্পেইন কম্পোজারে, একটি নতুন ক্যাম্পেইন তৈরি করুন অথবা একটি বিদ্যমান ক্যাম্পেইন নির্বাচন করুন, এবং কম্পোজার ওয়ার্কফ্লো-এর শিডিউলিং ধাপে, নতুন তৈরি করা বা বিদ্যমান মেসেজিং ইভেন্টের ইভেন্ট আইডিটি নোট করুন। নোট করা হয়ে গেলে, সেই আইডি দ্বারা ইভেন্টটি ট্রিগার করার জন্য আপনার অ্যাপটিকে ইন্সট্রুমেন্ট করুন।

সুইফট

দ্রষ্টব্য: এই পণ্যটি macOS, Mac Catalyst, App Clip বা watchOS-এ উপলব্ধ নয়।

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

উদ্দেশ্য-সি

দ্রষ্টব্য: এই পণ্যটি macOS, Mac Catalyst, App Clip বা watchOS-এ উপলব্ধ নয়।

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

ক্যাম্পেইন কাস্টম মেটাডেটা ব্যবহার করুন

আপনার ক্যাম্পেইনগুলিতে, আপনি একাধিক কী/ভ্যালু পেয়ারের মাধ্যমে কাস্টম ডেটা নির্দিষ্ট করতে পারেন। যখন ব্যবহারকারীরা মেসেজের সাথে ইন্টারঅ্যাক্ট করেন, তখন এই ডেটা আপনার কাছে উপলব্ধ হয়, যা দিয়ে আপনি, উদাহরণস্বরূপ, একটি প্রোমো কোড প্রদর্শন করতে পারেন।

সুইফট

দ্রষ্টব্য: এই পণ্যটি 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
	// ...
    }
}

উদ্দেশ্য-সি

দ্রষ্টব্য: এই পণ্যটি 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 In-App Messaging জন্য স্বয়ংক্রিয় ইনিশিয়ালাইজেশন নিষ্ক্রিয় করতে হবে এবং অপ্ট-ইন ব্যবহারকারীদের জন্য পরিষেবাটি ম্যানুয়ালি ইনিশিয়ালাইজ করতে হবে:

  1. আপনার Info.plist ফাইলে একটি নতুন কী ব্যবহার করে স্বয়ংক্রিয় প্রারম্ভিকীকরণ বন্ধ করুন:

    • Key: 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 তে সেট করুন।