تغییر رفتار پیام‌های «پیام‌رسانی درون‌برنامه‌ای Firebase»


با تلاش کم یا بدون تلاش برای کدنویسی، «پیام‌رسانی درون‌برنامه‌ای Firebase» به شما امکان می‌دهد تعاملات غنی کاربر را ایجاد، پیکربندی، و هدف‌یابی کنید و از قابلیت‌های Google Analytics به‌صورت آماده استفاده کنید تا رویدادهای پیام‌رسانی را به ویژگی‌ها، فعالیت‌ها، و انتخاب‌های واقعی کاربر مرتبط کنید. با برخی‌از ادغام‌های اضافی Firebase In-App Messaging SDK، می‌توانید رفتار پیام‌های درون‌برنامه را حتی بیشتر سفارشی کنید، وقتی کاربران با پیام‌ها تعامل می‌کنند پاسخ دهید، رویدادهای پیام را خارج از چارچوب Analytics راه‌اندازی کنید، و به کاربران اجازه دهید اشتراک‌گذاری داده‌های شخصی خود را که مربوط به تعاملات پیام‌رسانی است کنترل کنند.

وقتی کاربران با پیام‌های درون‌برنامه تعامل می‌کنند، پاسخ دهید

با کنش‌ها می‌توانید از پیام‌های درون‌برنامه‌ای برای هدایت کاربران به وب‌سایت یا صفحه‌نمایش خاصی در برنامه‌تان استفاده کنید.

کد شما می‌تواند به تعامل‌های پایه (کلیک‌ها و رد کردن‌ها)، به ظهورها (بازدیدهای تأییدشده پیام‌هایتان)، و به خطاهای نمایش ثبت‌شده و تأییدشده توسط کیت توسعه نرم‌افزار پاسخ دهد. برای مثال، وقتی پیامتان به‌صورت «کارت» مدال ساخته شده است، ممکن است بخواهید پیگیری کنید که کاربر روی کدام‌یک از دو نشانی وب در «کارت» کلیک کرده است.

برای مدیریت تعاملات «کارت»، DisplayDelegate را پیاده‌سازی کنید

می‌توانید نماینده نمایش پیام‌رسانی درون‌برنامه را ثبت کنید که هرگاه تعاملی با پیام درون‌برنامه وجود داشته باشد، فراخوانده می‌شود. برای انجام این کار، کلاسی را طبق پروتکل InAppMessagingDisplayDelegate پیاده‌سازی کنید و آن را به‌عنوان ویژگی نماینده در نمونه InAppMessaging تنظیم کنید.

با فرض اینکه می‌خواهید پیوندی را که کاربر در پیام «سبک کارت» روی آن کلیک کرده است ردیابی کنید، کلاسی را تعریف کنید که روش messageClicked را طبق پروتکل DisplayDelegate پیاده‌سازی کند، و از این طریق به پیوندی که کاربر روی آن کلیک کرده است دسترسی پیدا کنید.

Swift

توجه: این محصول در macOS،‏ Mac Catalyst،‏ App Clip، یا watchOS دردسترس نیست.

برای مجموعه روش‌های فراخوانی که می‌توانند پیاده‌سازی شوند و پارامترهای آن‌ها، ازجمله InAppMessagingAction، به مرجع نماینده نمایش Swift مراجعه کنید.


// 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 دردسترس نیست.

برای مجموعه روش‌های فراخوانی که می‌توانند پیاده‌سازی شوند و پارامترهای آن‌ها، ازجمله 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 به‌طور پیش‌فرض به شما امکان می‌دهد پیام‌های درون‌برنامه را با رویدادهای Google Analytics برای Firebase، بدون ادغام اضافی، راه‌اندازی کنید. همچنین می‌توانید بااستفاده از راه‌اندازهای برنامه‌ای کیت توسعه نرم‌افزار Firebase In-App Messaging، رویدادها را به‌صورت برنامه‌ای راه‌اندازی کنید.

در سازنده پویش «پیام‌رسانی درون‌برنامه»، پویش جدیدی ایجاد کنید یا پویش موجودی را انتخاب کنید، و در مرحله «زمان‌بندی» گردش کار سازنده، شناسه رویداد پیام‌رسانی جدیداً ایجادشده یا موجود را یادداشت کنید. پس‌از یادداشت کردن، برنامه‌تان را برای راه‌اندازی رویداد با شناسه آن آماده کنید.

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 هر زمان که شرط راه‌اندازی برآورده شود، صرف‌نظر از وضعیت فعلی برنامه، پیام‌ها را ارائه می‌دهد. اگر می‌خواهید نمایش پیام را به هر دلیلی متوقف کنید، برای مثال برای جلوگیری از ایجاد وقفه در توالی صفحه‌های پردازش پرداخت، از ویژگی messageDisplaySuppressed کیت توسعه نرم‌افزار استفاده کنید، همان‌طور که در اینجا در Objective-C نشان داده شده است:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

تنظیم کردن خصوصیت روی YES باعث می‌شود Firebase In-App Messaging پیام‌ها را نمایش ندهد، درحالی‌که NO نمایش پیام را دوباره فعال می‌کند. کیت توسعه نرم‌افزار هنگام بازراه‌اندازی برنامه، خصوصیت را به NO بازنشانی می‌کند. پیام‌های سرکوب‌شده توسط کیت توسعه نرم‌افزار نادیده گرفته می‌شوند. شرایط راه‌انداز آن‌ها باید دوباره درحالی‌که توقف موقت خاموش است برآورده شود تا Firebase In-App Messaging بتواند آن‌ها را نمایش دهد.

فعال کردن ارسال پیام انصراف

به‌طور پیش‌فرض، Firebase In-App Messaging به‌طور خودکار پیام‌ها را به همه کاربران برنامه‌ای که در پویش‌های پیام‌رسانی هدف‌یابی می‌کنید ارسال می‌کند. برای ارسال این پیام‌ها، کیت توسعه نرم‌افزار Firebase In-App Messaging از شناسه‌های نصب 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 تنظیم کنید.