프로젝트폴더 내부의 android 폴더에서 android/app/src/main/res/values 경로로 들어갑니다. strings.xml 파일이 없고, styles.xml 파일만 존재할 경우 strings.xml 파일을 새로 생성하여 주세요. 아래 경로 그림을 참고해 주세요.
프로젝트의 Target API 28 이상일 경우 AndroidManifest.xml 파일에서 application부분에 android:networkSecurityConfig="@xml/network_security_config" 코드를 추가하여 Http 통신 허용 추가합니다.
지연된 딥링크 기능 제공 SDK 버전 - Android SDK: Base Modeul - 1.0.81 이상 / New Dot Module - 1.0.51 이상
지연된 딥링크를 사용하는경우 기존의 DOT.initialization(this); 호출대신 DOT.initializationForDeferredCallback 함수를 사용 해 주세요.
import com.sdk.wisetracker.new_dot.open.DOT;
class MainActivity: FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState);
/**
* Wisetracker SDK init
* **/
DOT.initializationForDeferredCallback(this) {
// deferred deeplink 정보는 DOT.getDeferredUrl() 로 사용이 가능하며,
// 앱에서는 해당 변수를 다음과 같이 사용할 수 있음.
// 1. callback 이 호출되는 시점에 즉시 __deferredUrl 화면으로 이동 처리. __deferredUrl 값이 nil 이면 메인 화면으로 이동 처리.
// 2. __deferredUrl 변수값을 어딘가에 저장하고, 회원가입 이후, 로그인이 완료된 이후등과 같이 필요한 시점에 저장된 값을 꺼내서 이동 처리.
// 3. 사용 가능한 Deferred deeplink 정보가 없는 경우에는, __deferredUrl 값이 널(NULL) 이 될 수 있음을 고려하여 사용.
String __deferredUrl = DOT.getDeferredUrl();
WiseLog.d("current deferred url : $__deferredUrl")
if(__deferredUrl != null){
// Dart 로 링크 전달
val flutterChannel = MethodChannel(flutterEngine?.dartExecutor as BinaryMessenger, "dot");
flutterChannel.invokeMethod("deferredLink", __deferredUrl);
}
}
};
}
//.dart 에서 전달된 링크 수신 예제 코드
// 1. service 추가.
import 'package:flutter/services.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
...
...
}
class MyApp extends StatelessWidget {
// 2.deferred link 수신 채널 생성
static const __deferredLinkOfWisetracker = MethodChannel('dot');
@override
Widget build(BuildContext context) {
// 3. Native 에서 dot 채널로 전송되어 오는 데이터 처리 code
__deferredLinkOfWisetracker.setMethodCallHandler((call) async {
// deferredLink 로 전달되어 오면
if (call.method == 'deferredLink') {
// 전달 받은 call.arguments 에 따라서 화면 이동 처리.
print("call.arguments " + call.arguments);
}
});
...
...
}
}
Facebook 광고 성과 측정
아래 페이지로 이동하여 Android Facebook 광고 성과 측정을 위한 코드를 추가 해 주세요.
4. iOS 플러그인 설정
4.1 SDK 설치
Cocoapod 환경에서 SDK 다운로드 방법
XCode 프로젝트 중 Podfile 파일에 다음과 같이 SDK를 추가합니다
pod 'RW'
기존에 SDK를 한번 설치한 경우에는 설치할SDK 버전을 표시해야 하는 경우도 있습니다. 아래와 같이 설치할 SDK버전을 명시적으로 표시하면 됩니다.
pod 'RW', '~> 1.1.57'
Podfile 에 해당라인을 추가한 후 Terminal 프로그램을 실행하여 다음의 명령을 수행합니다
pod install
SDK 버전 업데이트의 경우 다음의 명령을 수행합니다.
pod update
정상적으로 설치가 되면 아래와 같은 폴더 구조를 확인할 수 있습니다.
4.2 HTTP 통신 허용 설정
HTTP통신을 허용하기 위해 info.plist파일을 엽니다. 파일의 위치는 다음과 같습니다.
</dict>검색을 통해 닫히는 라인 바로 위에 NSAppTransportSecurity 코드를 추가합니다.
지연된 딥링크를 사용하는경우 기존의 DOT.initialization 호출대신 DOT initializationForDeferredCallback 함수를 사용 해 주세요.
[DOT initializationForDeferredCallback:launchOptions application:application callback:^{
// deferred deeplink 정보는 [DOT getDeferredUrl]로 사용이 가능하며,
// 앱에서는 해당 변수를 다음과 같이 사용할 수 있음.
// 1. callback 이 호출되는 시점에 즉시 __deferredUrl 화면으로 이동 처리. __deferredUrl 값이 nil 이면 메인 화면으로 이동 처리.
// 2. __deferredUrl 변수값을 어딘가에 저장하고, 회원가입 이후, 로그인이 완료된 이후등과 같이 필요한 시점에 저장된 값을 꺼내서 이동 처리.
// 3. 사용 가능한 Deferred deeplink 정보가 없는 경우에는, __deferredUrl 값이 널(NULL) 이 될 수 있음을 고려하여 사용.
NSString* __deferredUrl = [DOT getDeferredUrl];
NSLog(@"Deferred callback executed %@", __deferredUrl);
if(__deferredUrl != nil){
dispatch_async(dispatch_get_main_queue(), ^{
// Dart 로 링크 전달
FlutterViewController* controller = (FlutterViewController*)self.window.rootViewController;
FlutterMethodChannel* methodChannel = [FlutterMethodChannel
methodChannelWithName:@"dot"
binaryMessenger:controller.binaryMessenger];
[methodChannel invokeMethod:@"deferredLink" arguments:__deferredUrl];
});
}
}];
DOT.initialization(forDeferredCallback: launchOptions, application: application ) {
// deferred deeplink 정보는 DOT.getDeferredUrl() 로 사용이 가능하며,
// 앱에서는 해당 변수를 다음과 같이 사용할 수 있음.
// 1. callback 이 호출되는 시점에 즉시 __deferredUrl 화면으로 이동 처리. __deferredUrl 값이 nil 이면 메인 화면으로 이동 처리.
// 2. __deferredUrl 변수값을 어딘가에 저장하고, 회원가입 이후, 로그인이 완료된 이후등과 같이 필요한 시점에 저장된 값을 꺼내서 이동 처리.
let deferredUrl = DOT.getDeferredUrl()
print("Deferred callback executed \(deferredUrl)")
if(deferredUrl != nil){
DispatchQueue.main.async {
// Dart로 링크 전달
if let controller = self.window?.rootViewController as? FlutterViewController {
let methodChannel = FlutterMethodChannel(name: "dot", binaryMessenger: controller.binaryMessenger)
methodChannel.invokeMethod("deferredLink", arguments: deferredUrl)
}
}
}
}
// .dart 에서 전달된 링크 수신 예제 코드
// 1. service 추가.
import 'package:flutter/services.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
...
...
}
class MyApp extends StatelessWidget {
// 2.deferred link 수신 채널 생성
static const __deferredLinkOfWisetracker = MethodChannel('dot');
@override
Widget build(BuildContext context) {
// 3. Native 에서 dot 채널로 전송되어 오는 데이터 처리 code
__deferredLinkOfWisetracker.setMethodCallHandler((call) async {
// deferredLink 로 전달되어 오면
if (call.method == 'deferredLink') {
// 전달 받은 call.arguments 에 따라서 화면 이동 처리.
print("call.arguments " + call.arguments);
}
});
...
...
}
}
Facebook 광고 성과 측정
아래 페이지로 이동하여 ios Facebook 광고 성과 측정을 위한 코드를 추가 해 주세요.
6. 이벤트 설정
설정 확인
모든 설정 완료 후 log를 통해 데이터 수집을 확인 합니다. (Android 기준)
아래 log 내용은 서비스별로 달라질 수 있으나, Data Receive Success가 기록되는지를 중심으로 확인이 필요합니다.
log에 해당 내용이 확인이 된다면 수신이 정상적으로 이루어졌으며, 와이즈트래커의 SDK를 호출할 준비가 완료되었습니다.
프로젝트 폴더 > ios폴더 > Podfile 에서 가장 상단에 있는 platform : ios 버전을 9.3으로 변경 해 주세요. (주석 처리가 되어 있다면 주석 해제 후 9.3 버전으로 수정)
[!] Automatically assigning platform `iOS` with version `9.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See
`https://guides.cocoapods.org/syntax/podfile.html#platform`.
5. SampleCode 제공
☑️Flutter SDK 설정을 도와드리기위한 샘플코드가 제작되어 있습니다.
해당 가이드 참고시 샘플 코드도 함께 참고 하신다면, SDK 적용을 수월하게 진행하실 수 있습니다.
에 로그인하여 설정 > 서비스설정 메뉴에서 '서비스번호' 항목에 기재된 숫자를 확인 후 복사하여 serviceNumber 값을 변경 해 주세요.
의 퍼포먼스를 와이즈트래커로 측정하는데 필요한 설정으로, Facebook SDK가 앱에 추가되어 있는 경우에만 설정을 적용할 수 있습니다.
에 로그인하여 설정 > 서비스설정 메뉴에서 '서비스번호' 항목에 기재된 숫자를 확인 후 복사하여 serviceNumber 값을 변경 해 주세요.
의 퍼포먼스를 와이즈트래커로 측정하는데 필요한 설정으로, Facebook SDK가 앱에 추가되어 있는 경우에만 설정을 적용할 수 있습니다.
화면전환 또는 이벤트 분석을 위한 적용 방법은 플러그인 설정 및 초기화 이후에 를 다운받으신 후 확인이 가능합니다.
IOS platform 지정 에러 발생시
ios 확인을 위해 "flutter run" 확인 시 아래와 같은 에러 코드가 발생한다면 다음과 같은 조치를 해야합니다.