Home > V2 > Docs > Sdk > Flutter > Flutter-install-guide

Flutter 플러그인 연동가이드

1. 플러그인 설치 (AOS/IOS 공통 설정)

[플러그인 설치가이드 공식문서] https://pub.dev/packages/dot_sdk/install

2. Android 플러그인 설정

2.1 AuthorizationKey 설정

프로젝트의 app/res/values/strings.xml 파일에 아래 코드를 추가합니다.

Copy
XML
1<string-array name="dotAuthorizationKey">
2 <item name="useMode">1</item>
3 <item name="serviceNumber">xxxxx</item>
4 <item name="expireDate">14</item>
5 <item name="isDebug">false</item>
6 <item name="isInstallRetention">true</item>
7 <item name="isFingerPrint">true</item>
8 <item name="accessToken"></item>
9</string-array>

추가한 코드 중 serviceNumber의 value를 올바른 값으로 변경해야 합니다. 와이즈트래커에 로그인하여 화면 상단의 Service 부분을 선택하면 앱 이름과 함께 올바른 Service Number 가 나타납니다. Service No. 옆의 숫자를 복사하여 serviceNumber의 value로 입력해주세요.

2.2 Http 통신 허용 설정

프로젝트의 Target API 28 이상일 경우 Http 통신 허용 추가

Copy
XML
1<!-- AndroidManifest.xml -->
2<application
3 android:icon="@mipmap/ic_launcher"
4 android:label="@string/app_name"
5 android:networkSecurityConfig="@xml/network_security_config"
6 android:theme="@style/AppTheme">
Copy
XML
1<!-- app/res/xml/network_security_config.xml -->
2<?xml version="1.0" encoding="utf-8"?>
3<network-security-config>
4 <domain-config cleartextTrafficPermitted="true">
5 <domain includeSubdomains="true">trk.analytics.wisetracker.co.kr</domain>
6 </domain-config>
7</network-security-config>

3. iOS 플러그인 설정

3.1 http 통신 허용 설정

  • http통신을 허용하기 위해 info.plist파일에 NSAppTransportSecurity를 아래와 같이 추가합니다
Copy
XML
1<key>NSAppTransportSecurity</key>
2<dict>
3 <key>NSAllowsArbitraryLoads</key>
4 <true/>
5</dict>

3.2 dotAuthorizationKey값 세팅

info.plist 파일에 아래 코드를 추가해 주세요.

Copy
XML
1<key>dotAuthorizationKey</key>
2<dict>
3 <key>serviceNumber</key>
4 <string>xxxxx</string>
5 <key>expireDate</key>
6 <string>14</string>
7 <key>isDebug</key>
8 <string>true</string>
9 <key>isInstallRetention</key>
10 <string>true</string>
11 <key>isFingerPrint</key>
12 <string>true</string>
13 <key>accessToken</key>
14 <string></string>
15 <key>useMode</key>
16 <string>2</string>
17</dict>

추가한 코드 중 serviceNumber의 value를 올바른 값으로 변경해야 합니다. 와이즈트래커에 로그인하여 화면 상단의 Service 부분을 선택하면 앱 이름과 함께 올바른 Service Number 가 나타납니다. Service No. 옆의 숫자를 복사하여 serviceNumber의 value로 입력해주세요.

authKey

3.3 Pod install 이슈 발생 시

iOS 실행시 Pod install에서 이슈 발생하는 경우 ios/Podfile 내에 use_frameworks! 부분을 아래와 같이 주석처리를 해주세요.

Copy
CMD
1target 'Runner' do
2 # use_frameworks!
3 use_modular_headers!
4
5 flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
6end

4. 초기화

최초로 실행되는 Dart 파일에 아래와 같이 초기화 API를 호출합니다. 일반적으로 initState함수에 추가해주시면 됩니다.

Copy
DART
1void initState() {
2 super.initState();
3 DOT.initialization();
4 }

5. 페이지 분석

고객사 앱에서 페이지 네비게이션으로 RouteObserver Class를 사용하고 있다면 아래와 같이 사용해 주세요.

Copy
DART
1class Screen2 extends StatelessWidget {
2 @override
3 Widget build(BuildContext context) {
4 //페이지 관련 정보 세팅
5 var screen = {};
6 screen["pi"] = "DTL";
7
8 DOT.logScreen(screen);
9
10
11 return Scaffold(appBar: AppBar(), body: Center(child: Text('Screen 2')));
12 }
13}
14
15class Screen3 extends StatelessWidget {
16 @override
17 Widget build(BuildContext context) {
18 //페이지 관련 정보 세팅
19 var screen = {};
20 screen["pi"] = "DTL";
21 screen["event"] = "w_view_product";
22
23 DOT.logScreen(screen);
24
25 return Scaffold(appBar: AppBar(), body: Center(child: Text('Screen 3')));
26 }
27}
28
29class MyRouteObserver extends RouteObserver<PageRoute<dynamic>> {
30 // -------------------
31 // 추가
32 var screenName = '';
33 void _sendScreenView(PageRoute<dynamic> route) {
34 var currentScreenName = route.settings.name;
35 if (screenName != currentScreenName) {
36 print('screenName $screenName --> $currentScreenName ');
37 DOT.onStartPage();
38
39 this.screenName = currentScreenName;
40 }
41 }
42 // ---------
43
44 @override
45 void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
46 super.didPush(route, previousRoute);
47 // -------------------
48 // ÷추가
49 if (route is PageRoute) {
50 _sendScreenView(route);
51 }
52 // ------
53 }
54
55 @override
56 void didReplace({Route<dynamic> newRoute, Route<dynamic> oldRoute}) {
57 super.didReplace(newRoute: newRoute, oldRoute: oldRoute);
58 // -------------------
59 // ÷추가
60 if (newRoute is PageRoute) {
61 _sendScreenView(newRoute);
62 }
63 // ------
64 }
65
66 @override
67 void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
68 super.didPop(route, previousRoute);
69 // -------------------
70 // ÷추가
71 if (previousRoute is PageRoute && route is PageRoute) {
72 _sendScreenView(previousRoute);
73 }
74 // -------------------
75 }
Table of Contents

© 2020 Wisetracker 주식회사 와이즈트래커
대표이사: 김선준 | 서울시 강남구 테헤란로 415, 스파크플러스 2층 | 02-6925-6636 | contact@wisetracker.co.kr | 사업자등록번호: 261-81-22632 | 통신판매업신고: 2015-서울강남-02766