העברת הודעות בתוך האפליקציה ב-Firebase מאפשרת ליצור, להגדיר ולטרגט אינטראקציות עשירות של משתמשים, ללא צורך במאמץ תכנות או במאמץ מינימלי, תוך ניצול היכולות של Google Analytics יצירתיות, כדי לקשר אירועי העברת הודעות למאפיינים, לפעילויות ולאפשרויות של המשתמש בפועל. שילוב נוסף של Firebase In-App Messaging SDK מאפשר להתאים אישית את ההתנהגות של ההודעות באפליקציה עוד יותר, להגיב כשמשתמשים יוצרים אינטראקציה עם הודעות, להפעיל אירועי הודעות מחוץ למסגרת Analytics ולאפשר למשתמשים לשלוט בשיתוף של המידע האישי שלהם שקשור לאינטראקציות עם הודעות.
תגובה כשמשתמשים מבצעים אינטראקציה עם הודעות מתוך האפליקציה
באמצעות פעולות, תוכלו להשתמש בהודעות בתוך האפליקציה כדי להפנות משתמשים לאתר או למסך ספציפי באפליקציה.
הקוד יכול להגיב לאינטראקציות בסיסיות (קליקים וסגירות), לחשיפות (צפיות מאומתות בהודעות) ולהצגת שגיאות שתועדו ביומן ואומתו על ידי ה-SDK. לדוגמה, כשההודעה כתובה כחלון מודאלי של כרטיס, כדאי לעקוב אחרי שתי כתובות ה-URL שהמשתמש לחץ עליהן בכרטיס, ולעקוב אחריהן.
הטמעת DisplayDelegate לטיפול באינטראקציות עם כרטיסים
אתם יכולים לרשום נציג להצגת הודעות באפליקציה, שייקרא בכל פעם שתהיה אינטראקציה עם הודעה באפליקציה. כדי לעשות זאת, צריך להטמיע מחלקה לפי הפרוטוקול InAppMessagingDisplayDelegate
ולהגדיר אותה כמאפיין להענקת גישה במכונה של InAppMessaging
.
שוב, נניח שאתם רוצים לעקוב אחרי הקישור שבו משתמש לחץ בהודעה בסגנון כרטיס. כדי לעשות זאת, מגדירים כיתה שמטמיעה את השיטה messageClicked
בהתאם לפרוטוקול DisplayDelegate
, וכך מספקים גישה לקישור שבו המשתמש לחץ.
Swift
במאמר העזרה בנושא Swift מפורטות קבוצת שיטות הקריאה החוזרת (callback) שניתן להטמיע והפרמטרים שלהן, כולל 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
// 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
…
// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");
Objective-C
…
// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];
שימוש במטא-נתונים מותאמים אישית של קמפיינים
בקמפיינים, אפשר לציין נתונים מותאמים אישית בסדרה של צמדי מפתח/ערך. כשמשתמשים יוצרים אינטראקציה עם הודעות, הנתונים האלה זמינים לכם, למשל, כדי להציג קוד הטבה.
Swift
class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {
func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
// Get data bundle from the inapp message
let appData = inAppMessage.appData
// ...
}
}
Objective-C
@implementation CardActionFiamDelegate
- (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {
appData = inAppMessage.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 ולאתחל את השירות באופן ידני למשתמשים שמסכימים:
משביתים את האינטוליזציה האוטומטית באמצעות מפתח חדש בקובץ
Info.plist
:- מקש:
FirebaseInAppMessagingAutomaticDataCollectionEnabled
- ערך:
NO
- מקש:
אתחול ידני של Firebase In-App Messaging למשתמשים שנבחרו:
// Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO // in Info.plist [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES;
אחרי שמגדירים את
automaticDataCollectionEnabled
ל-YES
, הערך נמשך לאחר הפעלה מחדש של האפליקציה, ומחליף את הערך מה-Info.plist
. אם רוצים להשבית את האתחול שוב, לדוגמה אם משתמש יסרב לאיסוף במועד מאוחר יותר, צריך להגדיר את הנכס ל-NO
.