이 동영상을 통해 연동 과정을 자세히 살펴보세요. 동영상과 아래의 서면 가이드를 모두 사용하는 것이 좋습니다.
시작하기 전에 SDK 사전 요구 사항
Singular SDK 연동하기의 단계를 따르세요 :계획 및 사전 요구 사항의 단계를 따르세요.
이러한 단계는 모든 Singular SDK 연동을 위한 전제 조건입니다.
SDK 설치
Singular SDK는 Flutter용 플러그인으로 제공됩니다. 아래 지침은 Singular를 Flutter 앱에 연동하는 방법을 보여줍니다.
- 이 문서에서는 작동하는 Flutter 앱이 있다고 가정합니다.
- SDK를 초기화하려면 Singular SDK 키와 SDK 시크릿이 필요합니다. Singular 플랫폼의"개발자 도구 > SDK 연동 > SDK 키"에서 얻을 수 있습니다.
프로젝트에 Singular Flutter 플러그인을 추가하려면 다음과 같이 하세요:
-
pubspec.yaml 파일에 singular_flutter_sdk: ^1.6.2 을 추가합니다:
dependencies: flutter: sdk: flutter singular_flutter_sdk: ^1.6.2
-
그런 다음 터미널에서 프로젝트로 이동하여 다음을 실행합니다:
flutter packages get
전제 조건 설정
iOS 필수 구성 요소
Singular 플러터 플러그인을 사용하려면 AdServices 프레임워크를 추가합니다.
-
iOS 프로젝트에 애드서비스 프레임워크를 추가합니다:
- Flutter 프로젝트의 ios 폴더로 이동합니다.
- Xcode에서 Runner.xcworkspace 을 엽니다(코코아팟을 사용하는 경우 .xcworkspace, 그렇지 않은 경우 .xcodeproj).
-
애드서비스 프레임워크를 추가합니다:
- Xcode에서 프로젝트의 대상(예: "Runner")을 선택합니다.
- 일반 탭으로 이동합니다.
- 프레임워크, 라이브러리 및 임베디드 콘텐츠 섹션으로 스크롤합니다.
- 버튼을 클릭합니다.
- AdServices.framework 을 검색하여 추가합니다.
- 프레임워크 상태를 선택 사항으로 설정합니다(이전 iOS 버전에서 프레임워크를 사용할 수 없는 경우 호환성을 보장하기 위해).
Android 사전 요구 사항
필수 Android 권한 및 종속성 추가하기
AndroidManifest.xml 파일의 <manifest> 태그 아래에 이러한 권한을 추가합니다:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="BIND_GET_INSTALL_REFERRER_SERVICE" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
삼성 갤럭시 스토어의 설치 리퍼러를 지원하려면 다음을 추가합니다:
<queries>
<package android:name="com.sec.android.app.samsungapps" />
</queries>
Singular SDK에 대한 전이 종속성을 비활성화한 경우 android/app/build.gradle에 다음을 추가합니다:
dependencies {
implementation 'com.android.installreferrer:installreferrer:2.2'
implementation 'com.google.android.gms:play-services-appset:16.0.0'
}
프로가드를 사용하는 경우 구성 요구 사항
리액트 네이티브 안드로이드에서 Singular SDK용 ProGuard 구성하기
Singular 안드로이드 SDK를 Flutter 안드로이드 앱에 연동할 때, 특정 ProGuard 규칙을 추가하여 SDK가 릴리스 빌드에서 올바르게 작동하는지 확인해야 합니다. ProGuard(또는 최신 대체품인 R8)는 코드를 최적화하고 난독화하는 데 사용됩니다. 적절한 ProGuard 규칙이 없으면 Singular SDK 또는 해당 종속성이 제거되거나 난독화되어 런타임 문제를 일으킬 수 있습니다.
다음 단계에 따라 Singular SDK용 ProGuard를 구성하세요:
- ProGuard 규칙 파일 찾기: Flutter 프로젝트에서 android/app/proguard-rules.pro 파일로 이동합니다. 이 파일에는 앱에 대한 사용자 지정 ProGuard 규칙이 포함되어 있습니다.
- Singular SDK ProGuard 규칙을 추가합니다: android/app/proguard-rules.pro 에 다음 줄을 추가하여 Singular SDK 및 해당 종속성을 유지합니다:
# Preserve Singular SDK classes
-keep class com.singular.sdk.** { *; }
# Preserve Android Install Referrer library
-keep public class com.android.installreferrer.** { *; }
# Uncomment the following line if you are using the Singular 'revenue' function with Google Play Billing Library
#-keep public class com.android.billingclient.** { *; }
SDK 연동
참고: Singular SDK를 구현할 때 GDPR, CCPA 및 COPPA를 포함하되 이에 국한되지 않는 비즈니스를 수행하는 지역에서 제정된 다양한 개인정보 보호법을 준수해야 한다는 점을 잊지 마세요. 자세한 내용은 SDK 옵트인 및 옵트아웃 사례를 참조하세요.
앱을 열 때마다 SDK 초기화 코드를 호출해야 합니다. 이는 모든 Singular 어트리뷰션 기능의 전제 조건이며, 또한 새로운 사용자 세션을 Singular로 전송합니다. 세션은 사용자 리텐션을 계산하는 데 사용됩니다.
Singular 라이브러리 가져오기
main.dart 파일에 다음 코드를 추가하여 Singular 클래스를 가져옵니다.
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
Singular SDK 초기화하기
앱을 열 때마다 Singular SDK 초기화 코드가 호출되어야 합니다. 이는 모든 Singular 어트리뷰션 기능의 전제 조건이며, 새 사용자 세션을 Singular로 전송합니다(세션은 사용자 리텐션을 계산하는 데 사용됨).
초기화 코드는 앱이 열릴 때 가장 먼저 로드되는 기본 앱 위젯(예: main.dart)에 있습니다. 이 위젯은 스테이트풀이어야 하며 위젯의 initState() 메서드에 코드를 추가해야 합니다.
- SingularConfig 객체를 만듭니다. 이 객체에는 SDK 키와 SDK 비밀 번호가 포함됩니다(키와 비밀 번호는 Singular 계정에 로그인하고"개발자 도구 > SDK 연동 > SDK 키"로 이동하여 얻을 수 있습니다).
-
선택 사항으로 여러 구성 방법을 추가하여 다양한 SDK 기능을 설정하거나 활성화할 수 있습니다.
- 그런 다음 start 메서드를 사용하여 SDK를 초기화하여 SingularConfig 객체를 전달합니다.
- 초기화 코드를 포함하도록 main.dart 에서 _MyHomePageState 클래스를 업데이트합니다.
수정된 main.dart 예시:
import 'package:singular_flutter_sdk/singular.dart';
import 'package:singular_flutter_sdk/singular_config.dart';
//...
class MyHomePage extends StatefulWidget {
//...
}
class _MyHomePageState extends State<MyHomePage> {
//...
@override
void initState() {
super.initState();
//...
SingularConfig config = new SingularConfig('SDK KEY', 'SDK SECRET');
// Enable Logging for testing
config.logLevel = 3;
config.enableLogging = true;
// Set hashed User ID if available
config.customUserId = "b642b4217b34b1e8d3bd915fc65c4452";
// For iOS (Remove this if you are not displaying an ATT prompt)!
config.waitForTrackingAuthorizationWithTimeoutInterval = 300;
// To enable SkAdNetwork Support
config.skAdNetworkEnabled = true;
// To enable META Install Referrer
config.facebookAppId = "INSERT YOUR FACEBOOK APP ID HERE";
// (optional) Using Singular Global Properties feature to capture
// third party identifiers. The respective SDK(s) must be initialized
// before the Singular SDK. Example of passing the CleverTapID.
// var cleverTapId = CleverTapPlugin.getCleverTapID();
// config.withGlobalProperty("CLEVERTAPID", cleverTapId, true);
Singular.start(config);
}