Firebase 인앱 메시지를 사용하면 코딩 작업을 거의 또는 전혀 수행하지 않고도 다양한 사용자 상호작용을 만들고 구성하며 타겟팅할 수 있으므로 Google Analytics의 기능을 바로 활용하여 실제 사용자 특성, 활동과 선택에 메시지 이벤트를 연결할 수 있습니다.
Firebase In-App Messaging SDK를 추가로 통합하면 사용자가 메시지와 상호작용할 때 응답하고, Analytics 프레임워크 외부에서 메시지 이벤트를 트리거하고, 사용자가 메시지 상호작용과 관련된 개인 데이터 공유를 제어할 수 있도록 하여 인앱 메시지의 동작을 더욱 맞춤설정할 수 있습니다.
사용자가 인앱 메시지와 상호작용할 때 응답
작업을 사용하면 인앱 메시지를 통해 사용자를 웹사이트 또는 앱의 특정 화면으로 안내할 수 있습니다.
코드를 통해 기본 상호작용(클릭 및 닫기), 노출(메시지 조회수), SDK에서 로깅 및 확인한 표시 오류에 응답할 수 있습니다. 예를 들어 메시지가 카드 모달로 구성된 경우 2개의 URL 중 사용자가 카드에서 클릭한 URL을 추적하고 후속 조치를 취할 수 있습니다.
DisplayDelegate를 구현하여 카드 상호작용 처리
인앱 메시지와 상호작용할 때마다 호출되는 인앱 메시지 표시 대리자를 등록할 수 있습니다. 이렇게 하려면 InAppMessagingDisplayDelegate 프로토콜에 따라 클래스를 구현하고 InAppMessaging 인스턴스에서 delegate 속성으로 설정합니다.
사용자가 카드 스타일 메시지에서 클릭한 링크를 추적하려는 경우 DisplayDelegate 프로토콜에 따라 messageClicked 메서드를 구현하는 클래스를 정의합니다. 그러면 사용자가 클릭한 링크에 액세스할 수 있습니다.
Swift
참고: 이 제품은 macOS, Mac Catalyst, 앱 클립 또는 watchOS 대상에서는 사용할 수 없습니다.
InAppMessagingAction을 포함하여 구현할 수 있는 콜백 메서드 집합과 해당 매개변수는 Swift 표시 대리자 참조를 확인하세요.
// In CardActionFiamDelegate.swiftclassCardActionFiamDelegate:NSObject,InAppMessagingDisplayDelegate{funcmessageClicked(_inAppMessage:InAppMessagingDisplayMessage){// ...}funcmessageDismissed(_inAppMessage:InAppMessagingDisplayMessage,dismissType:InAppMessagingDismissType){// ...}funcimpressionDetected(forinAppMessage:InAppMessagingDisplayMessage){// ...}funcdisplayError(forinAppMessage:InAppMessagingDisplayMessage,error:Error){// ...}}
// In AppDelegate.swift// Register the delegate with the InAppMessaging instanceletmyFiamDelegate=CardActionFiamDelegate()InAppMessaging.inAppMessaging().delegate=myFiamDelegate;
Firebase In-App Messaging를 사용하면 기본적으로 추가 통합 없이도 Firebase용 Google 애널리틱스 이벤트를 통해 인앱 메시지를 트리거할 수 있습니다. 또한 Firebase In-App Messaging SDK의 프로그래매틱 트리거를 통해 프로그래매틱 방식으로 이벤트를 수동으로 트리거할 수 있습니다.
인앱 메시지 캠페인 작성기에서 새로운 캠페인을 만들거나 기존 캠페인을 선택하고, 작성기 워크플로의 일정 예약 단계에서 새로 작성된 메시지 이벤트나 기존 메시지 이벤트의 ID를 기록합니다. 이후 앱을 구현하여 ID를 사용해 이벤트를 트리거합니다.
Swift
참고: 이 제품은 macOS, Mac Catalyst, 앱 클립 또는 watchOS 대상에서는 사용할 수 없습니다.
…// somewhere in the app's codeInAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");
Objective-C
참고: 이 제품은 macOS, Mac Catalyst, 앱 클립 또는 watchOS 대상에서는 사용할 수 없습니다.
…// somewhere in the app's code[[FIRInAppMessaginginAppMessaging]triggerEvent:@"exampleTrigger"];
캠페인 커스텀 메타데이터 사용
캠페인에서 일련의 키-값 쌍에 커스텀 데이터를 지정할 수 있습니다.
사용자가 메시지와 상호작용하면 이 데이터를 사용하여 프로모션 코드 표시와 같은 작업을 수행할 수 있습니다.
Swift
참고: 이 제품은 macOS, Mac Catalyst, 앱 클립 또는 watchOS 대상에서는 사용할 수 없습니다.
classCardActionDelegate:NSObject,InAppMessagingDisplayDelegate{funcmessageClicked(_inAppMessage:InAppMessagingDisplayMessage){// Get data bundle from the inapp messageletappData=inAppMessage.appData// ...}}
기본적으로 Firebase In-App Messaging는 앱의 현재 상태에 관계없이 트리거 조건이 충족될 때마다 메시지를 렌더링합니다. 어떤 이유에서든 메시지를 표시하지 않으려면(예: 일련의 결제 처리 화면이 중단되지 않도록 하려는 경우) 다음 Objective-C 코드처럼 SDK의 messageDisplaySuppressed 속성을 사용하면 됩니다.
속성을 YES로 설정하면 Firebase In-App Messaging에서 메시지를 표시하지 않으며 NO는 메시지 표시를 다시 사용 설정합니다. SDK는 앱을 다시 시작할 때 속성을 NO로 설정하며 비표시 설정된 메시지는 SDK에서 무시됩니다. 비표시 기능이 중지된 다음 메시지의 트리거 조건이 다시 충족되어야만 Firebase In-App Messaging에 메시지가 표시됩니다.
메시지 전송 선택 해제 옵션 사용 설정
기본적으로 Firebase In-App Messaging는 메시지 캠페인에서 타겟팅하는 모든 앱 사용자에게 자동으로 메시지를 전송합니다. 이러한 메시지를 전송하기 위해 Firebase In-App Messaging SDK는 Firebase 설치 ID를 사용하여 각 사용자의 앱을 식별합니다. 즉, In-App Messaging에서 설치 ID에 연결된 클라이언트 데이터를 Firebase 서버로 전송해야 합니다. 사용자가 자신이 전송하는 데이터를 더욱 효과적으로 관리할 수 있도록 지원하려면 자동 데이터 수집을 사용 중지하고 사용자가 데이터 공유를 승인할 수 있게 합니다.
이를 위해 Firebase In-App Messaging의 자동 초기화를 사용 중지하고 사용자가 옵션을 선택한 경우에는 서비스를 수동으로 초기화해야 합니다.
선택한 사용자에 대해 Firebase In-App Messaging을 수동으로 초기화합니다.
// Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO// in Info.plist[FIRInAppMessaginginAppMessaging].automaticDataCollectionEnabled=YES;
[null,null,["최종 업데이트: 2025-08-29(UTC)"],[],[],null,["\u003cbr /\u003e\n\niOS+ Android Flutter \n\n\u003cbr /\u003e\n\nWith little to no coding effort, Firebase In-App Messaging allows you to create,\nconfigure and target rich user interactions, leveraging\nthe capabilities of Google Analytics out of the box\nto tie messaging events to actual user characteristics, activities, and choices.\nWith some additional Firebase In-App Messaging SDK integration, you can tailor\nthe behavior of in-app messages even further, responding when users interact\nwith messages, triggering message events outside the Analytics\nframework, and allowing users to control sharing of their personal data related\nto messaging interactions.\n\nRespond when users interact with in-app messages\n\nWith actions you can use your in-app messages to direct users to a\nwebsite or a specific screen in your app.\n\nYour code can respond to basic interactions (clicks and dismissals), to\nimpressions (verified views of your messages), and to display errors logged and\nconfirmed by the SDK. For example, when your message is composed as a Card\nmodal, you might want to track and follow-up on which of two URLs the user\nclicked on the Card.\n\nImplement a DisplayDelegate to handle Card interactions\n\nYou can register an in-app messaging display delegate that will be called\nwhenever there is any interaction with an in-app message. To do this, implement\na class per the `InAppMessagingDisplayDelegate` protocol and set it as the\ndelegate property on the `InAppMessaging` instance.\n\nAssuming again that you want to track which link a user clicked on a Card-style\nmessage, define a class that implements the `messageClicked` method per the\n`DisplayDelegate` protocol, thereby providing you access to the\nlink clicked by the user. \n\nSwift\n\n\n**Note:** This product is not available on macOS, Mac Catalyst, App Clip or watchOS targets.\n\nRefer to the Swift [display delegate reference](/docs/reference/swift/firebaseinappmessaging/api/reference/Protocols/InAppMessagingDisplayDelegate) for the set of callback methods that can be implemented and their parameters, including\nInAppMessagingAction. \n\n\n // In CardActionFiamDelegate.swift\n class CardActionFiamDelegate : NSObject, InAppMessagingDisplayDelegate {\n\n func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {\n // ...\n }\n\n func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,\n dismissType: InAppMessagingDismissType) {\n // ...\n }\n\n func impressionDetected(for inAppMessage: InAppMessagingDisplayMessage) {\n // ...\n }\n\n func displayError(for inAppMessage: InAppMessagingDisplayMessage, error: Error) {\n // ...\n }\n\n } \n https://github.com/firebase/snippets-ios/blob/cdce007fedb3bb90dd3a70ce03066178236e1deb/inappmessaging/FIAMReference/FIAMReferenceSwift/CardActionFiamDelegate.swift#L20-L39\n\n\n // In AppDelegate.swift\n // Register the delegate with the InAppMessaging instance\n let myFiamDelegate = CardActionFiamDelegate()\n InAppMessaging.inAppMessaging().delegate = myFiamDelegate; \n https://github.com/firebase/snippets-ios/blob/cdce007fedb3bb90dd3a70ce03066178236e1deb/inappmessaging/FIAMReference/FIAMReferenceSwift/AppDelegate.swift#L30-L32\n\nObjective-C\n\n\n**Note:** This product is not available on macOS, Mac Catalyst, App Clip or watchOS targets.\n\nRefer to the Objective-C [display delegate reference](/docs/reference/ios/firebaseinappmessaging/api/reference/Protocols/FIRInAppMessagingDisplayDelegate) for the set of callback methods that can be implemented and their parameters, including\nFIRInAppMessagingDisplayMessage. \n\n\n // In CardActionFiamDelegate.h\n @interface CardActionFiamDelegate : NSObject \u003cFIRInAppMessagingDisplayDelegate\u003e\n @end\n\n // In CardActionFiamDelegate.m\n @implementation CardActionFiamDelegate\n\n - (void)displayErrorForMessage:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage\n error:(nonnull NSError *)error {\n // ...\n }\n\n - (void)impressionDetectedForMessage:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {\n // ...\n }\n\n - (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {\n // ...\n }\n\n - (void)messageDismissed:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage\n dismissType:(FIRInAppMessagingDismissType)dismissType {\n // ...\n }\n\n @end \n https://github.com/firebase/snippets-ios/blob/cdce007fedb3bb90dd3a70ce03066178236e1deb/inappmessaging/FIAMReference/FIAMReference/CardActionFiamDelegate.m#L20-L40\n\n\n // In AppDelegate.m\n CardActionFiamDelegate *myFiamDelegate = [CardActionFiamDelegate new];\n [FIRInAppMessaging inAppMessaging].delegate = myFiamDelegate; \n https://github.com/firebase/snippets-ios/blob/cdce007fedb3bb90dd3a70ce03066178236e1deb/inappmessaging/FIAMReference/FIAMReference/AppDelegate.m#L35-L36\n\nTrigger in-app messages programmatically\n\nFirebase In-App Messaging by default allows you to trigger in-app messages with\nGoogle Analytics for Firebase events, with no additional integration. You can\nalso manually trigger events programmatically with the Firebase In-App Messaging SDK's\nprogrammatic triggers.\n\nIn the In-App Messaging campaign composer, create a new campaign or select an\nexisting campaign, and in the Scheduling step of the composer workflow, note the\nevent ID of a newly-created or existing messaging event. Once noted, instrument\nyour app to trigger the event by its ID. \n\nSwift\n\n\n**Note:** This product is not available on macOS, Mac Catalyst, App Clip or watchOS targets. \n\n ...\n // somewhere in the app's code\n InAppMessaging.inAppMessaging().triggerEvent(\"exampleTrigger\");\n\nObjective-C\n\n\n**Note:** This product is not available on macOS, Mac Catalyst, App Clip or watchOS targets. \n\n ...\n // somewhere in the app's code\n [[FIRInAppMessaging inAppMessaging] triggerEvent:@\"exampleTrigger\"];\n\nUse campaign custom metadata\n\nIn your campaigns, you can specify custom data in a series of key/value pairs.\nWhen users interact with messages, this data is available for you to, for example,\ndisplay a promo code. \n\nSwift\n\n\n**Note:** This product is not available on macOS, Mac Catalyst, App Clip or watchOS targets. \n\n class CardActionDelegate : NSObject, InAppMessagingDisplayDelegate {\n\n func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {\n \t// Get data bundle from the inapp message\n \tlet appData = inAppMessage.appData\n \t// ...\n }\n } \n https://github.com/firebase/snippets-ios/blob/cdce007fedb3bb90dd3a70ce03066178236e1deb/inappmessaging/FIAMReference/FIAMReferenceSwift/CardActionFiamDelegate.swift#L44-L51\n\nObjective-C\n\n\n**Note:** This product is not available on macOS, Mac Catalyst, App Clip or watchOS targets. \n\n @implementation ExampleCardActionDelegate\n\n - (void)messageClicked:(nonnull FIRInAppMessagingDisplayMessage *)inAppMessage {\n NSDictionary *appData = inAppMessage.appData;\n NSLog(@\"Message data: %@\", appData);\n \t// ...\n }\n\n @end \n https://github.com/firebase/snippets-ios/blob/cdce007fedb3bb90dd3a70ce03066178236e1deb/inappmessaging/FIAMReference/FIAMReference/CardActionFiamDelegate.m#L48-L56\n\nTemporarily disable in-app messages\n\nBy default, Firebase In-App Messaging renders messages whenever a triggering condition is\nsatisfied, regardless of an app's current state. If you'd like to suppress\nmessage displays for any reason, for example to avoid interrupting a\nsequence of payment processing screens, use the SDK's\n`messageDisplaySuppressed` property as illustrated here in Objective-C: \n\n [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES; \n https://github.com/firebase/snippets-ios/blob/cdce007fedb3bb90dd3a70ce03066178236e1deb/inappmessaging/FIAMReference/FIAMReference/ViewController.m#L31-L31\n\nSetting the property to `YES` prevents Firebase In-App Messaging from displaying messages,\nwhile `NO` reenables message display. The SDK resets the property to `NO`\non app restart. Suppressed messages are ignored by the SDK. Their trigger\nconditions must be met again while suppression is off, before Firebase In-App Messaging can\ndisplay them.\n\nEnable opt-out message delivery\n\nBy default, Firebase In-App Messaging automatically delivers messages to all app users you target\nin messaging campaigns. To deliver those messages, the Firebase In-App Messaging SDK uses\nFirebase installation IDs to identify each user's app. This means\nthat In-App Messaging has to send client data, linked to the\ninstallation ID, to Firebase servers. If you'd like to give users\nmore control over the data they send, disable automatic data collection and give\nthem a chance to approve data sharing.\n\nTo do that, you have to disable automatic initialization for Firebase In-App Messaging, and\ninitialize the service manually for opt-in users:\n\n1. Turn off automatic initialization with a new key in your `Info.plist` file:\n\n - Key: `FirebaseInAppMessagingAutomaticDataCollectionEnabled`\n - Value: `NO`\n2. Initialize Firebase In-App Messaging for selected users manually:\n\n // Only needed if FirebaseInAppMessagingAutomaticDataCollectionEnabled is set to NO\n // in Info.plist\n [FIRInAppMessaging inAppMessaging].automaticDataCollectionEnabled = YES; \n https://github.com/firebase/snippets-ios/blob/cdce007fedb3bb90dd3a70ce03066178236e1deb/inappmessaging/FIAMReference/FIAMReference/ViewController.m#L37-L39\n\n Once you set `automaticDataCollectionEnabled` to `YES`, the value persists\n through app restarts, overriding the value in your `Info.plist`. If you'd like\n to disable initialization again, for example if a user opts out of\n collection later, set the property to `NO`."]]