שינוי ההתנהגות של הודעות בתוך האפליקציה ב-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 Analytics for 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 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.