라이브러리 추가
라이브러리를 다운 받아 아래와 같이 Gradle에 추가해주세요.
implementation files('libs/netfunnel-android-agent_latest.aar')
설정 정보 초기화
에이전트를 적용하는 첫번째 과정은 별도로 제공해드리는 초기화 함수를 사용하여 NetFUNNEL 에이전트의 설정 정보를 초기화하는 과정입니다.
NetFUNNEL 기능을 사용 하기 전 InitNetfunnel, InitEum 함수를 사용하여 초기화 해주세요.
public void Init() {
Netfunnel.InitNetfunnel(
"MyAppName", // MyAppName: 애플리케이션의 이름
"{tenant API URL}", // API Server URL
"{tenant NF URL}", // NetFUNNEL Server URL
"{nf-setting URL}", // NetFUNNEL Setting File URL
"{network Timeout}" // 넷퍼넬 요청의 최대 타임아웃 시간
this // 대기/차단 창이 생성되기 위한 Activity
);
/*
* 1. Eum Server URL (Same As Netfunnel Server URL), 2. activity(to collect device info)
*/
Netfunnel.InitEum(
"{EUM Server URL}", // EUM Server URL: EUM에 특정한 서버 URL
"{timeout}" // EUM요청 최대 타임아웃
this // Activity
);
Netfunnel.getInstance().InitEum(tenantAPINFURL, 2000,this) // EUM 설정
Netfunnel.getInstance().EUMCollectYN(true) // EUM 수집 여부
}
트래픽 제어 설정
대기 종료 후 실행될 콜백함수 구현
가상 대기실에서 대기가 종료되는 상황에 따라 콜백 함수가 호출됩니다. 콜백 함수의 종류에 따라 진입 성공 및 차단 처리를 할 수 있으며, 대기가 취소되었을 때 콜백 함수를 구현하여 진입 차단과 대기 취소시 발생하는 여러 사용자 시나리오를 구현하실 수 있습니다.
콜백 함수는 NetFUNNEL 제어 응답에 따른 동작이 정의된 인터페이스인 AgentInterface 클래스에서 정의하고 있습니다. 별도의 클래스에서 AgentInterface 클래스를 상속받아 내부 콜백 함수들을 구현하거나 아래와 같이 AgentInterface 클래스의 생성자로부터 내부 콜백 함수들을 구현할 수 있습니다.
AgentInterface 클래스 생성자를 통해 콜백 함수들을 구현
AgentInterface agentInterface = new AgentInterface() {
@Override
public void onSuccess() {
/*
* 대기가 끝나고 진입에 성공하거나, 넷퍼넬 서버 자체에 문제가 있어 요청에 실패할 경우 호출됩니다.
*/
}
@Override
public void onCancel() {
/*
* 대기화면에서 대기취소 버튼을 클릭했을 때 호출됩니다.
*/
}
@Override
public void nfLog(String _message) {
/*
* 넷퍼넬 라이브러리에서 기록되는 로그가 호출 됩니다.
* like DLog.d(_message)
*/
}
@Override
public void onNetworkDisconnect() {
/*
* 넷퍼넬 서버에 요청에 실패했으나, 그 원인이 디바이스의 네트워크가 차단된 경우에 호출 됩니다.
*/
}
@Override
public void onKeyError() {
/*
* 이미 만료된 키, 혹은 존재하지 않는 키, 혹은 잘못된 키로 요청할 경우 호출됩니다.
*/
}
@Override
public void onBlock() {
/*
* 관리자 콘솔에서 프로젝트 접근 모드 설정이 비활성화 되어 있을 경우에 호출됩니다.
*/
}
@Override
public void onIpBlock() {
/*
* 관리자 콘솔에서 매크로 차단 기능 잦은 요청이 차단된 경우 호출됩니다.
*/
}
};
진입에 성공할 경우 호출되는 콜백 구현
진입에 성공할 경우 두 가지 구현을 합니다.
- 타겟 페이지로 진입하는 코드
- 완료 처리 함수를 호출하여 발급된 키를 NetFUNNEL 서버에 반납하는 과정을 수행
완료 처리 함수
함수 종류 | 함수명 | 인자 | 설명 |
완료 처리 함수 | NFStop | projectKey |
세그먼트 등록시 NF 콘솔에 출력된project 키 값 ex) service_1 |
segmentKey |
세그먼트 등록시 NF 콘솔에 출력된 segment 키 값 ex) serKey_1234 |
아래는 onSuccess() 콜백 함수를 구현한 예시 코드입니다.
AgentInterface agentInterface = new AgentInterface() {
@Override
public void onSuccess() {
// 기본제어 종료함수 실행
Netfunnel.NFStop(projectKey, segmentKey);
// 액티비티 전환 수행
runOnUiThread(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(CurrentActivity.this, NewActivity.class);
startActivity(intent);
}
});
}
};
진입이 차단되는 경우 호출되는 콜백 구현
진입이 차단되는 경우는 보통 매크로 성의 잦은 요청이나 잘못된 키를 통해 악의적으로 요청을 하는 경우 입니다. 이 같은 상황에서 방문자의 유저 경험을 증대 시키기 위한 목적으로 아래와 같은 로직을 구현할 수 있습니다.
- 현재 페이지에 머무르고 싶을 경우 : 로직 구현 필요 없음
- 진입이 차단되었음을 표시하는 모달 창을 별도로 띄우는 로직을 구현
- 진입이 차단되었음을 표시하는 특정 페이지로 이동을 시키는 로직을 구현
- 로깅 로직을 구현
진입이 차단 혹은 실패하는 경우에는 위와 같은 로직을 구현하실 수 있으며, 진입 성공 케이스와 다르게 별도의 완료 처리 함수 호출을 필요로 하지 않습니다.
아래는 onBlock() 콜백 함수를 구현한 예시 코드입니다.
AgentInterface agentInterface = new AgentInterface() {
@Override
public void onBlock() {
/*
1. 현재 페이지에 머무르고 싶을 경우에는 아무 로직도 구현할 필요가 없음
2. 진입이 차단되었음을 표시하는 모달 창을 별도로 띄우는 로직을 구현
3. 진입이 차단되었음을 표시하는 특정 페이지로 이동을 시키는 로직을 구현
4. 로깅 로직을 구현
*/
}
};
대기가 취소될 경우 호출되는 콜백 구현
엔드 유저가 가상 대기실에서 대기를 하고 있는 도중에 대기 취소 버튼을 누르게 경우는 대기 취소 콜백이 호출될 수 있습니다. 이 같은 상황에서 방문자의 유저 경험을 증대 시키기 위한 목적으로 아래와 같은 로직을 구현할 수 있습니다.
- 현재 페이지에 머무르고 싶을 경우에는 아무 로직도 구현할 필요가 없음
- 대기가 취소되었음을 표시하는 모달 창을 별도로 띄우는 로직을 구현
- 대기가 취소되었음을 표시하는 특정 페이지로 이동을 시키는 로직을 구현
- 로깅 로직을 구현
대기가 취소되는 경우에는 위와 같은 로직을 구현할 수 있으며, 진입 성공 케이스와 다르게 별도의 완료 처리 함수 호출을 필요로 하지 않습니다.
아래는 대기 취소 버튼이 눌렸을 때 호출되는 onCancel 콜백 함수를 구현한 예시 코드입니다.
AgentInterface agentInterface = new AgentInterface() {
@Override
public void onCancel() {
/*
1. 현재 페이지에 머무르고 싶을 경우에는 아무 로직도 구현할 필요가 없음
2. 진입이 차단되었음을 표시하는 모달 창을 별도로 띄우는 로직을 구현
3. 진입이 차단되었음을 표시하는 특정 페이지로 이동을 시키는 로직을 구현
4. 로깅 로직을 구현
*/
}
};
대기 시작
가상 대기실을 통해 트래픽 대기를 적용하고 싶은 페이지(뷰 혹은 액티비티)의 특정 부분에서 대기 적용하기 위해서는 별도로 제공해드리는 대기 시작 함수를 사용하여 가상 대기실을 적용할 수 있습니다.
NetFUNNEL 가상 대기실에 방문자를 머물게 하기 위한 코드 부분에 NFStart() 함수를 호출하세요.
Netfunnel.NFStart("{project Key}", "{segment Key}", agentInterface);
댓글
댓글 0개
이 문서에는 댓글을 달 수 없습니다.