빠른 시작
이 빠른 시작 가이드로 5-10분 안에 NetFUNNEL 4 Flutter Agent를 시작하세요.
이 가이드에서 할 수 있는 것
- 코드 기반 통합: 버튼/API 레벨에서 정확한 타이밍으로 트래픽 제어
통합 방법 선택
통합 방법을 비교하고 사용 사례에 가장 적합한 접근 방식을 찾으려면 통합 방법 개요를 참조하세요.
사전 요구사항
- NetFUNNEL 콘솔 액세스
- Flutter 프로젝트
- Dart 기본 지식
샘플 프로젝트
연습용 기본 프로젝트가 필요하신가요? 샘플 프로젝트를 확인하세요.
1단계: Client ID 가져오기
- NetFUNNEL 콘솔로 이동
- 우측 상단의 프로필 아이콘 클릭
통합 자격 증명(Integration Credentials) 메뉴 선택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.dart의 main() 함수 시작 시점에서 초기화 작업을 수행합니다:
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 호출, 단일 단계 작업
-
콘솔에서 세그먼트 생성:
Projects→Segment→Create Segment로 이동- Basic Control 선택
진입 허용수를0으로 설정 (테스트용)
-
코드에 추가:
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}}',
);
}
구간 제어
최적 용도: 결제 프로세스, 다단계 프로세스
- 콘솔에서 세그먼트 생성 (기본 제어와 동일)
- 코드에 추가:
// 구간 시작
Netfunnel.instance.nfStartSection(
projectKey: '{{PROJECT_KEY}}',
segmentKey: '{{SEGMENT_KEY}}',
callback: NetfunnelHandler(),
context: context,
);
// 구간 종료 (전체 프로세스 완료 시)
Netfunnel.instance.nfStopSection(
projectKey: '{{PROJECT_KEY}}',
segmentKey: '{{SEGMENT_KEY}}',
);
4단계: 테스트
- 진입 허용수를 0으로 설정하고 대기실이 올바르게 표시되는지 확인
- 진입 허용수를 1로 설정 (즉시 진입해야 함)
- Network 탭에서 키 반납 확인 (
ts.wseq?opcode=5004HTTP 200)
도움이 필요하신가요?
- 문제 해결: 일반적인 문제 및 해결 방법
- Flutter 콘솔에서 NetFUNNEL 로그 확인 (
printLog: true설정) - 콘솔의 프로젝트/세그먼트 키가 정확히 일치하는지 확인