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


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

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

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

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

تنفيذ Displayمفوَّض للتعامل مع تفاعلات البطاقة

يمكنك تسجيل مستخدم مفوَّض لعرض المراسلة داخل التطبيق سيتم استدعاؤه عند حدوث أي تفاعل مع رسالة داخل التطبيق. لإجراء ذلك، يجب تنفيذ فئة وفقًا لبروتوكول 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: 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 أو 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.

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

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 CardActionFiamDelegate : 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 CardActionFiamDelegate

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

@end

إيقاف الرسائل داخل التطبيق مؤقتًا

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

  [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.