adforus_greenp_plugin 1.0.3
adforus_greenp_plugin: ^1.0.3 copied to clipboard
AdForUs GreenP OfferWall Plugin for Flutter. Supporting both Android and iOS. Refer to our website https://greenp.kr/ for more details on how to join our program and use our SDK Offer Walls
Greenp 오퍼월 지원 가이드 #
기본 요건 #
- Flutter SDK 3.13.1 이상
- 권장사항: Flutter SDK 3.27.1 이상
- Android: 최신 버전의 Android Studio
- Android: minSdkVersion 24
- iOS: 최신 버전의 Xcode와 명령어 도구 활성화
- iOS: Deployment Target 14 이상
플랫폼별 설정 #
Android #
Manifest.xml 권한 설정 #
플러그인과 함께 사용하기 위한 권한 요구 사항. 올바른 플러그인 통합을 위해 필수입니다
<uses-permission android:name=“android.permission.ACCESS_NETWORK_STATE”/>
<uses-permission android:name=“com.google.android.gms.permission.AD_ID”/>
<!-- CS 첨부파일 등록을 위해 외부 파일 접근권한이 필요합니다. api level에 따라 선택해서 선언해주세요. -->
<!-- targetSdk 33 이상 -->
<uses-permission android:name=“android.permission.READ_MEDIA_IMAGES”/>
HTTP 트래픽 설정 #
올바르게 트래픽을 설정하려면 반드시 설정해야 합니다.
<application
...
android:usesCleartextTraffic="true">
...
<application/>
런타임 빌드 오류가 발생하고 오퍼월로 이동할 때 이 오류 메시지가 나타납니다. OfferWallActivity는 부모 애플리케이션의 테마 유형이 동일해야 합니다. 설정이 올바르지 않으면 빌드 오류와 충돌이 발생할 수 있습니다.
E/AndroidRuntime(17535): java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example.greenpsample/
com.adforus.sdk.greenp.v3.ui.
view.activity.GreenpOfferwallActivity}:java.lang.IllegalStateException:
You need to use a Theme.AppCompat theme (or descendant) with this activity.
values/styles.xml을 Theme.AppCompat 업데이트해야 합니다
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar"> // ✅ 수정된 테마입니다
<item name="android:windowFullscreen">true</item>
</style>
이 테마가 애플리케이션 수준에서 설정되었는지 확인하세요. 이 설정은 AndroidManifest.xml의
<application
android:label="greenpsample"
android:name="${applicationName}"
android:usesCleartextTraffic="true"
android:theme="@style/LaunchTheme" // ✅ 전체 애플리케이션에 적용하세요
android:icon="@mipmap/ic_launcher">
iOS #
Podfile 설정 #
BUILD_LIBRARY_FOR_DISTRIBUTION 설정을 post_install do |installer|에 적용하고, 값을 YES로 설정해야 합니다. 이 설정이 올바르게 되어 있지 않으면 iOS 앱이 시작할 때 크래시가 발생합니다
target.build_configurations.each do |config|
config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
end
Info.plist 설정 #
이는 Apple의 앱 추적 투명성(ATT) 정책에 의해 요구됩니다. NSUserTrackingUsageDescription 키는 사용자의 활동이 개인 맞춤 광고를 위해 추적된다는 것을 사용자에게 알립니다. 이 설명이 없으면 앱은 추적 데이터를 액세스할 수 없으며, 정상적으로 작동하지 않을 수 있습니다
<key>NSUserTrackingUsageDescription</key>
<string>개인 맞춤 광고를 제공하기 위해 귀하의 활동을 추적하려고 합니다. 이를 허용하시겠습니까?</string>
http 통신 예외처리 #
이 코드는 iOS의 App Transport Security (ATS) 설정을 수정하여, 특정 도메인(greenp.kr)에 대해 HTTP 통신을 허용하는 예외처리입니다. 기본적으로 ATS는 HTTPS만 허용하지만, 이 설정을 통해 HTTP 연결을 허용할 수 있습니다. 보안상 주의가 필요하며, 특정 도메인에만 예외를 적용합니다.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>greenp.kr</key>
<dict/>
</dict>
</dict>
Plugin 사용방법 #
Plugin 사용 방법 #
import 'package:greenp_plugin/greenp_plugin.dart
GreenpSdkManager greenpSdkManager = GreenpSdkManager();
import 'package:greenp_plugin/greenp_plugin.dart';이 코드는 플러그인을 임포트하는 줄입니다.GreenpSdkManager greenpSdkManager = GreenpSdkManager();를 초기화하여 SDK를 설정합니다
Plugin 초기화 방법 #
greenpSdkManager.initGreenpSDKPlugin 초기화 함수 실행합니다
greenpSdkManager.initGreenpSDK(
appCode: Platform.isIOS ? "iOS 앱 코드 아이디" : "Android 앱 코드 아이디,
userId: "사용자 아이디,
onFailed: (error) {
print("Initialize Error $error");
},
);
greenpSdkManager.initGreenpSDK 함수 필수 값 #
appCodeGreenp 앱 코드입니다userId사용자 아이디 값입니다onFailed는 플러그인 초기화 실패 시 실행되는 함수입니다. 오류 메시지를 확인하기 위해 값을 반환합니다
오퍼월 이동하기 #
greenpSdkManager.navigateToOfferWall();
- 플러그인 초기화에 성공하면 오퍼월 페이지로 이동할 수 있습니다. 실패한 경우 이동이 불가능합니다.
- 오퍼월로 이동되지 않는 경우, 플러그인이 정상적으로 초기화되었는지 확인하는 것이 중요합니다.
- 오퍼월 이동하는 함수입니다
greenpSdkManager.navigateToOfferWall();
선택적 Google UAD Offer Wall 설정 #
확장 플러그인을 사용하거나 직접 이 방법을 구현할 수 있습니다. 확장 플러그인을 사용하려면 adforus_greenp_plugin과 함께 통합하여 설정을 완료해야 합니다
adforus_greenp_extension: ^1.0.0Extension Plugin
dependecies:
adforus_greenp_extension: ^1.0.0
Android: Google Admob Offerwall 선택 사용 필수 설정 #
Android: Google Admob Pub 아이디 설정. 이 설정은 Android에서 사용하도록 선택한 경우 필수입니다
<manifest>
<application>
<!-- 테세트 AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
<application>
<manifest>
[Project Script] build.gradle.kts (android/build.gradle.kts) #
확장 플러그인을 사용하지 않는 경우에만 이 단계를 구현하세요 #
setUrl(uri("https://artifact.bytedance.com/repository/pangle/")) 라인은 Greenp Admin 페이지에서 Google AdMob Offerwall을 선택할 때 Pangle SDK를 ByteDance의 저장소에서 가져오기 위해 필요합니다. 이를 통해 올바르게 통합할 수 있습니다.
allprojects {
repositories {
google()
mavenCentral()
maven {
setUrl(uri("https://artifact.bytedance.com/repository/pangle/"))
}
}
}
[Module Script] build.gradle.kts (android/app/build.gradle.kts) #
확장 플러그인을 사용하지 않는 경우에만 이 단계를 구현하세요 #
dependencies {
implementation("com.adforus.sdk:adsu:1.2.1")
}
Android: pro-guard 설정 #
ProGuard를 사용하는 경우, 다음 ProGuard 규칙을 추가하는 것이 권장됩니다
-keep class com.adforus.sdk.greenp.v3.** { *; }
-dontwarn com.adforus.sdk.greenp.v3.**
-keep class com.adforus.sdk.adsu.** {*;}
-dontwarn com.adforus.sdk.adsu.**
# Retrofit 2.X
## https://square.github.io/retrofit/ ##
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepclasseswithmembers class * {
@retrofit2.http.* <methods>;
}
iOS: Google Admob Offerwall 선택 사용 필수 설정 #
확장 플러그인을 사용하지 않는 경우에만 이 단계를 구현하세요 #
pod 'UAdKit', '1.1.0' Podfile target Runner 필수 추가하기.
target 'Runner' do
use_frameworks!
pod 'UAdKit', '1.1.0'
추가로 Pod Install 하기 #
iOS에서 오류와 버그를 방지하기 위해 터미널 명령어를 실행하여 Podfile을 정리하고 다시 설치하는 것이 권장됩니다
pod deintegrate && pod cache clean --all
pod install
iOS: Google Admob Pub 아이디 설정. #
GADApplicationIdentifier 설정은 iOS Info.plist 사용하도록 선택한 경우 필수입니다.
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~3347511713</string>