Firebase 인앱 메시지의 메시지 동작 수정


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.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, 앱 클립 또는 watchOS 대상에서는 사용할 수 없습니다.

FIRInAppMessagingDisplayMessage를 포함하여 구현할 수 있는 콜백 메서드 집합과 해당 매개변수는 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를 사용하면 기본적으로 추가 통합 없이도 Firebase용 Google 애널리틱스 이벤트를 통해 인앱 메시지를 트리거할 수 있습니다. 또한 Firebase In-App Messaging SDK의 프로그래매틱 트리거를 통해 프로그래매틱 방식으로 이벤트를 수동으로 트리거할 수 있습니다.

인앱 메시지 캠페인 작성기에서 새로운 캠페인을 만들거나 기존 캠페인을 선택하고, 작성기 워크플로의 일정 예약 단계에서 새로 작성된 메시지 이벤트나 기존 메시지 이벤트의 ID를 기록합니다. 이후 앱을 구현하여 ID를 사용해 이벤트를 트리거합니다.

Swift

참고: 이 제품은 macOS, Mac Catalyst, 앱 클립 또는 watchOS 대상에서는 사용할 수 없습니다.

// somewhere in the app's code
InAppMessaging.inAppMessaging().triggerEvent("exampleTrigger");

Objective-C

참고: 이 제품은 macOS, Mac Catalyst, 앱 클립 또는 watchOS 대상에서는 사용할 수 없습니다.

// somewhere in the app's code
[[FIRInAppMessaging inAppMessaging] triggerEvent:@"exampleTrigger"];

캠페인 커스텀 메타데이터 사용

캠페인에서 일련의 키-값 쌍에 커스텀 데이터를 지정할 수 있습니다. 사용자가 메시지와 상호작용하면 이 데이터를 사용하여 프로모션 코드 표시와 같은 작업을 수행할 수 있습니다.

Swift

참고: 이 제품은 macOS, Mac Catalyst, 앱 클립 또는 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, 앱 클립 또는 watchOS 대상에서는 사용할 수 없습니다.
@implementation CardActionFiamDelegate

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

@end

일시적으로 인앱 메시지 사용 중지

기본적으로 Firebase In-App Messaging는 앱의 현재 상태와 관계없이 트리거 조건이 충족될 때마다 메시지를 렌더링합니다. 어떤 이유에서든 메시지 표시를 억제하고 싶은 경우 예를 들어 일련의 결제 처리 화면이 중단되지 않도록 하려면 다음 Objective-C 코드처럼 SDK의 messageDisplaySuppressed 속성을 사용하면 됩니다.

  [FIRInAppMessaging inAppMessaging].messageDisplaySuppressed = YES;

속성을 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의 자동 초기화를 사용 중지하고 사용자가 옵션을 선택한 경우에는 서비스를 수동으로 초기화해야 합니다.

  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;
    
    

    automaticDataCollectionEnabledYES로 설정하면 앱을 다시 시작한 후에도 값이 유지되며 Info.plist의 값을 재정의합니다. 초기화를 다시 중지하려면(예: 사용자가 나중에 데이터 수집 허용을 해제하는 경우) 속성을 NO로 설정합니다.