본문으로 건너뛰기
버전: 4.6.1-saas

빠른 시작

이 빠른 시작 가이드로 5-10분 안에 NetFUNNEL 4 Flutter Agent를 시작하세요.

이 가이드에서 할 수 있는 것

  • 코드 기반 통합: 버튼/API 레벨에서 정확한 타이밍으로 트래픽 제어
통합 방법 선택

통합 방법을 비교하고 사용 사례에 가장 적합한 접근 방식을 찾으려면 통합 방법 개요를 참조하세요.


사전 요구사항

  • NetFUNNEL 콘솔 액세스
  • Flutter 프로젝트
  • Dart 기본 지식
샘플 프로젝트

연습용 기본 프로젝트가 필요하신가요? 샘플 프로젝트를 확인하세요.


1단계: Client ID 가져오기

  1. NetFUNNEL 콘솔로 이동
  2. 우측 상단의 프로필 아이콘 클릭
  3. 통합 자격 증명 (Integration Credentials) 메뉴 선택
  4. Client ID 복사

2단계: 설치 및 초기화

패키지 설치

tar.gz 파일을 프로젝트 루트 또는 원하는 위치에 복사한 뒤, pubspec.yaml에 의존성을 추가합니다:

dependencies:
netfunnel_flutter:
path: ./netfunnel_flutter-{{latest}} # tar.gz 파일을 복사한 경로

터미널에서 다음 명령어를 실행합니다:

flutter pub get

네트워크 권한 설정

Android의 경우, android/app/src/main/AndroidManifest.xml에 인터넷 권한을 추가합니다:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- 인터넷 권한 설정 -->
<uses-permission android:name="android.permission.INTERNET" />
</manifest>

초기화

main.dartmain() 함수 시작 시점에서 초기화 작업을 수행합니다:

import 'package:netfunnel_flutter/netfunnel_flutter.dart';

void main() async {
// NetFUNNEL 에이전트 초기화
await Netfunnel.instance.initialize(
clientId: 'your-client-id', // 1단계에서 가져온 Client ID
);
runApp(MyApp());
}

3단계: 통합 방법 선택

기본 제어

최적 용도: 버튼 클릭, API 호출, 단일 단계 작업

  1. 콘솔에서 세그먼트 생성:

    • ProjectsSegmentCreate Segment로 이동
    • Basic Control 선택
    • 진입 허용수0으로 설정 (테스트용)
  2. 코드에 추가:

import 'package:netfunnel_flutter/netfunnel_flutter.dart';

class NetfunnelHandler extends NetfunnelCallback {
@override
void onSuccess(int statusCode, String message) {
// 진입 또는 우회 응답을 받은 경우
// 기존 서비스 로직 실행
}

@override
void onError(int statusCode, String message) {
// 시스템 에러 발생 시
// 일반적으로 onSuccess와 동일하게 처리
}

@override
void onNetworkError(int statusCode, String message) {
// 네트워크 에러 발생 시
// 재시도 또는 알림 처리
}

@override
void onBlock(int statusCode, String message) {
// 사용자 진입 차단 시 처리할 로직
}

@override
void onClose(int statusCode, String message) {
// 사용자가 대기를 취소한 경우 처리할 로직
}
}

// 버튼 클릭 시
void handleButtonPress(BuildContext context) {
Netfunnel.instance.nfStart(
projectKey: '{{PROJECT_KEY}}', // 콘솔에서 가져온 프로젝트 키
segmentKey: '{{SEGMENT_KEY}}', // 콘솔에서 가져온 세그먼트 키
callback: NetfunnelHandler(),
context: context,
);
}

// 작업 완료 후 키 반납
void handleActionComplete() {
Netfunnel.instance.nfStop(
projectKey: '{{PROJECT_KEY}}',
segmentKey: '{{SEGMENT_KEY}}',
);
}

구간 제어

최적 용도: 결제 프로세스, 다단계 프로세스

  1. 콘솔에서 세그먼트 생성 (기본 제어와 동일)
  2. 코드에 추가:
// 구간 시작
Netfunnel.instance.nfStartSection(
projectKey: '{{PROJECT_KEY}}',
segmentKey: '{{SEGMENT_KEY}}',
callback: NetfunnelHandler(),
context: context,
);

// 구간 종료 (전체 프로세스 완료 시)
Netfunnel.instance.nfStopSection(
projectKey: '{{PROJECT_KEY}}',
segmentKey: '{{SEGMENT_KEY}}',
);

4단계: 테스트

  1. 진입 허용수를 0으로 설정하고 대기실이 올바르게 표시되는지 확인
  2. 진입 허용수를 1로 설정 (즉시 진입해야 함)
  3. Network 탭에서 키 반납 확인 (ts.wseq?opcode=5004 HTTP 200)

도움이 필요하신가요?

  • 문제 해결: 일반적인 문제 및 해결 방법
  • Flutter 콘솔에서 NetFUNNEL 로그 확인 (printLog: true 설정)
  • 콘솔의 프로젝트/세그먼트 키가 정확히 일치하는지 확인