인앱메시지 이벤트 리스너
지원 SDK 버전
ReactNative SDK 3.15.0 이상 버전에서 지원하는 기능입니다.
Interfaces
HackleInAppMessageListener
interface HackleInAppMessageListener {
beforeInAppMessageOpen?(inAppMessage: HackleInAppMessage): void;
afterInAppMessageOpen?(inAppMessage: HackleInAppMessage): void;
beforeInAppMessageClose?(inAppMessage: HackleInAppMessage): void;
afterInAppMessageClose?(inAppMessage: HackleInAppMessage): void;
onInAppMessageClick?(
inAppMessage: HackleInAppMessage,
view: HackleInAppMessageView,
action: HackleInAppMessageAction
): boolean;
}
onInAppMessageClick
onInAppMessageClick
메서드가 반환하는 boolean 값을 통해 인앱메시지의 동작을 제어할 수 있습니다.
true
를 반환하는 경우 기존 인앱메시지의 액션을 덮어씁니다.- 가령, 기존 인앱메시지의 클릭 시 액션이
하루 동안 보지 않기
였다면 해당 액션은 동작하지 않습니다.
- 가령, 기존 인앱메시지의 클릭 시 액션이
false
를 반환하는 경우 기존 인앱메시지의 액션이 그대로 동작합니다.
view.close()
를onInAppMessageClick
내부에서 호출하는 경우
view.close()
를 리스너 내부에서 호출한 경우true
를 반환한 것과 동일하게 처리됩니다.onInAppMessageClick(inAppMessage, view, action) { view.close(); // return false를 하더라도 true한 것과 동일하게 처리됨. return true; },
HackleInAppMessage
interface HackleInAppMessage {
key: number;
}
- 인앱메시지의 키를 반환합니다.
HackleInAppMessageView
interface HackleInAppMessageView {
close(): void;
}
close()
를 호출하여 인앱메시지를 리스너 함수 내에서 직접 닫을 수 있습니다.
HackleInAppMessageAction
type HackleInAppMessageActionType = 'CLOSE' | 'LINK';
interface HackleInAppMessageAction {
type: HackleInAppMessageActionType;
close?: {
hideDurationMillis: number | null;
};
link?: {
url: string;
shouldCloseAfterLink: boolean;
};
}
property | description |
---|---|
close?.hideDurationMillis | 메시지를 특정 기간동안 숨김 처리하는 액션인 경우, 해당 기간을 밀리초로 반환합니다. |
link?.url | 링크가 포함된 경우 링크를 반환합니다. e.g) https://hackle.io |
link?.shouldCloseAfterLink | 링크 이동 후 닫기 옵션이 ON 인 경우 true를 반환합니다. |
사용 예제
리스너 등록
hackleClient.setInAppMessageListener({
beforeInAppMessageOpen(inAppMessage) {
console.log('beforeInAppMessageOpen key:', inAppMessage.key);
},
afterInAppMessageOpen(inAppMessage) {
console.log('afterInAppMessageOpen key:', inAppMessage.key);
},
beforeInAppMessageClose(inAppMessage) {
console.log('beforeInAppMessageClose key:', inAppMessage.key);
},
afterInAppMessageClose(inAppMessage) {
console.log('afterInAppMessageClose key:', inAppMessage.key);
},
onInAppMessageClick(inAppMessage, view, action) {
console.log('onInAppMessageClick inAppMessage:', inAppMessage.key);
console.log('onInAppMessageClick action:', action);
view.close();
return true;
},
});
리스너 해제
setInAppMessageListener()
에 null을 전달하면 등록된 리스너를 해제할 수 있습니다.
hackleClient.setInAppMessageListener(null);
Updated about 1 month ago