تعديل سلوك رسائل المراسلة داخل التطبيق من Firebase


تتيح لك ميزة "الرسائل داخل التطبيق" في Firebase إنشاء تفاعلات غنية للمستخدمين وضبطها واستهدافها، وذلك بجهد قليل أو بدون جهد في الترميز، مع الاستفادة من إمكانات Google Analytics الجاهزة لربط أحداث المراسلة بخصائص المستخدمين وأنشطتهم وخياراتهم الفعلية. من خلال دمج حزمة تطوير البرامج (SDK) لخدمة Firebase In-App Messaging بشكل إضافي، يمكنك تخصيص سلوك الرسائل داخل التطبيق بشكل أكبر، والاستجابة عندما يتفاعل المستخدمون مع الرسائل، وتشغيل أحداث الرسائل خارج إطار عمل Analytics، والسماح للمستخدمين بالتحكّم في مشاركة بياناتهم الشخصية ذات الصلة بالتفاعلات مع الرسائل.

الردّ عندما يتفاعل المستخدمون مع الرسائل داخل التطبيق

باستخدام الإجراءات، يمكنك استخدام رسائلك داخل التطبيق لتوجيه المستخدمين إلى موقع إلكتروني أو شاشة معيّنة في تطبيقك.

يمكن أن يستجيب الرمز البرمجي للتفاعلات الأساسية (النقرات والإغلاقات) ومرّات الظهور (المشاهدات التي تم التحقّق منها لرسائلك) وأخطاء العرض التي تم تسجيلها وتأكيدها من خلال حزمة تطوير البرامج (SDK). على سبيل المثال، عندما يتم إنشاء رسالتك كنموذج بطاقة، قد تحتاج إلى تتبع ومتابعة أي من عنواني URL اللذين نقر عليهما المستخدم على البطاقة.

تنفيذ DisplayDelegate للتعامل مع تفاعلات البطاقات

يمكنك تسجيل مفوَّض لعرض الرسائل داخل التطبيق يتم استدعاؤه عند حدوث أي تفاعل مع رسالة داخل التطبيق. لإجراء ذلك، نفِّذ فئة وفقًا لبروتوكول InAppMessagingDisplayDelegate واضبطها كسمة المفوَّض في مثيل InAppMessaging.

لنفترض مرة أخرى أنّك تريد تتبُّع الرابط الذي نقر عليه المستخدم في رسالة على شكل بطاقة، يمكنك تحديد فئة تنفّذ طريقة messageClicked وفقًا لبروتوكول DisplayDelegate، ما يتيح لك الوصول إلى الرابط الذي نقر عليه المستخدم.

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 لبرنامج Firebase"، بدون الحاجة إلى أي عملية دمج إضافية. يمكنك أيضًا تشغيل الأحداث يدويًا وبشكل آلي باستخدام المشغّلات الآلية في حزمة تطوير البرامج (SDK) لـ "Firebase In-App Messaging".

في أداة إنشاء حملات &quot;المراسلة داخل التطبيق&quot;، أنشئ حملة جديدة أو اختَر حملة حالية، وفي خطوة &quot;الجدولة&quot; من سير عمل أداة الإنشاء، دوِّن رقم تعريف حدث المراسلة الذي تم إنشاؤه حديثًا أو الحالي. بعد تدوين المعرّف، عليك إعداد تطبيقك لتشغيل الحدث باستخدام معرّفه.

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 في حزمة تطوير البرامج (SDK) كما هو موضّح هنا في Objective-C:

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

يؤدي ضبط السمة على YES إلى منع Firebase In-App Messaging من عرض الرسائل، بينما يؤدي ضبطها على NO إلى إعادة تفعيل عرض الرسائل. وتعيد حزمة تطوير البرامج (SDK) ضبط السمة على NO عند إعادة تشغيل التطبيق. تتجاهل حزمة تطوير البرامج (SDK) الرسائل التي تم حجبها. ويجب استيفاء شروط تفعيلها مرة أخرى أثناء إيقاف ميزة الإيقاف المؤقت، قبل أن يتمكّن Firebase In-App Messaging من عرضها.

تفعيل ميزة إرسال رسائل الإيقاف

وفقًا للإعدادات التلقائية، يرسل Firebase In-App Messaging الرسائل تلقائيًا إلى جميع مستخدمي التطبيق الذين تستهدفهم في حملات المراسلة. لإرسال هذه الرسائل، تستخدم حزمة تطوير البرامج (SDK) في "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.