⚠️ Unity Editor 2022.x ~ 2022.3.9f1 에서 iOS xcode16 빌드 시 사용 불가- Unity Editor : 2021.3.8f1+, 2022.3.10f1+, 6000.1.3f1, 6000.1.11f1, 6000.1.12f1
- Android Target API Level : 31+
- Android Minimum API Level : 21
- iOS Minimum Version : 13.0
- Xcode Minimum Version : Xcode 16.0
Networks Version
| Ad Network | Android Version | iOS Version |
|---|---|---|
| AdMob | 24.8.0 | 12.14.0 |
| Amazon | 11.1.1 | 5.3.3 |
| AppLovin | 13.5.1 | 13.5.1 |
| BidMachine | 3.5.0 | 3.5.1 |
| Bigo | 5.6.2 | 5.0.0 |
| Chartboost | 9.11.0 | 9.11.0 |
| DT Exchange | 8.4.2 | 8.4.3 |
| InMobi | 11.1.0 | 11.0.0 |
| Ironsource | 9.2.0 | 9.2.0.0 |
| Liftoff(Vungle) | 7.6.3 | 7.6.3 |
| Line | 2.9.20251028 | 2.9.20251119 |
| Meta(Fan) | 6.21.0 | 6.20.1 |
| Mintegral(Mobvista) | 17.0.61 | 8.0.4 |
| Moloco | 4.4.0 | 4.2.0 |
| Ogury | 6.2.1 | 5.1.1 |
| Pangle | 7.8.5.2 | 7.8.5.5 |
| Pubmatic | 4.11.0 | 4.11.0 |
| Smaato | 22.7.2 | - |
| TNKPub | 7.25.03 | 1.24 |
| Unity Ads | 4.16.5 | 4.16.5 |
| Verve | 3.7.1 | - |
기존 gms SDK 사용중인 퍼블리셔는 admob 혹은 max 어댑터 사용 시 24버전으로 마이그레이션 필요 (관련 문서)
- gms 22 버전: 애디스콥
3.3.0~4.0.1- gms 23 버전: 애디스콥
4.1.0~4.3.2- gms 24 버전: 애디스콥
4.4.0이상
- Initialize
- 사용자 정보 설정
- Offerwall
- RewardedVideo
- Interstitial
- RewardedInterstitial
- Lucky Event
- Other API
- Unity Editor 21.3.33f1, 21.3.34f1, 22.3.14f1, 22.3.15f1 Error 해결 방법
- Xcode Archive Error 해결 방법
- Unity Editor 2022.3.9f1 이하에서 iOS xcode15 빌드 시 Error 내용

가. Unity의 Window > Package Manager 메뉴 클릭
나. Package Manager의 왼쪽 상단 플러스(+) 버튼 > Add package from git URL 버튼 클릭
다. 아래 링크를 붙여넣고 Add 버튼 클릭
https://github.com/adiscope/Adiscope-Unity-UPM.git?path=Adiscope

가. Releases 페이지에서 필요한 SDK 버전의 Assets > com.tnk.adiscope.tgz 버튼을 클릭하여 tarball 파일 다운로드
나. Unity의 Window > Package Manager 메뉴 클릭
다. Package Manager의 왼쪽 상단 플러스(+) 버튼 > Add package from tarball 버튼 클릭
라. 다운로드받은 tgz 파일을 선택
- External Dependency Manager for Unity - 마지막 버전 파일로 이동
- External Dependency Manager for Unity - 사이트 이동
external-dependency-manager-*.unitypackage파일을 다운로드- Unity project를 열어서 navigate에서
Assets -> Import Package -> Custom Package선택 external-dependency-manager-*.unitypackage파일을 선택 후 전체Import- Unity version
2022.2+에서는1.2.176+사용
- Link frameworks statically 해지
- Unity project를 열어서 navigate에서
Edit -> Project Settings로 Project Settings 창 Open Player를 선택 후Android탭으로 이동
Other Settings에서Target API Level를API lovel 31이상으로 설정
Publishing Settings에서Project Keystore와Project Key를 설정
Build > Custom Main Manifest체크를 설정Build > Custom Main Gradle Template체크를 설정Build > Custom Gradle Properties Template체크를 설정
- Unity project를 열어서 navigate에서
Edit -> Project Settings로 Project Settings 창을 열어AdiscopeSDK를 선택 Settings Android from json file를 선택하여 전달받은 Android.json 파일을 선택Settings iOS from json file를 선택하여 전달받은 iOS.json 파일을 선택- Dashboard의 값은 Adiscope 설정 값들로 자동 세팅
- iOS의 Tracking Desc(NSUserTrackingUsageDescription)값을 추가하면 xcode의 plist에 해당 값으로 추가 됨
- iOS의 앱 추적 팝업의 설명에 추가 됨
- Dashboard의 값을 직접 수정 후
Create Adiscope Android & iOS Files를 선택하면 해당 값으로 앱 설정 됨
Create Adiscope Android & iOS Files를 선택⚠️ 버전 변경 시 마다Create Adiscope Android & iOS Files를 선택해야 해당 값으로 앱 설정 됨- 인터넷이 연결되어 있어야 함
- Adapter Version이 상이할 경우 Initialize시 Log를 통해 확인 가능
FrameworkSettingsRegister.AdiscopeImportJson(<Android_Json_Path>, <iOS_Json_Path>);- '/Library/PackageCache/com.tnk.adiscope/Editor/Scripts/FrameworkSettingsRegister.cs' 파일에 있는 함수 호출
- 관리자에게 전달 받은 Android & iOS의 Json 파일 위치 입력
- Unity project를 열어서 navigate에서
Assets -> External Dependency Manager -> Android Resolver -> Resolver(or Force Resolver)를 선택
- Build된 Project에서 Unity-iPhone.xcodeproj가 아닌
Unity-iPhone.xcworkspace로 실행 - CocoaPods가 설치 안 되어 있으면 수동 설치
using Adiscope;Adiscope.Sdk.GetCoreInstance().Initialize((isSuccess) => {
if (isSuccess) {
// Initialize Call Back
} else {
// Initialize Fail
}
}, CALLBACK_TAG, CHILD_YN);- Android는
Adiscope.androidlib폴더 내의AndroidManifest.xml에adiscope_media_id가 있어야 함 (파일 위치 확인) - iOS는 Build된 Project에서
Info.plist파일에서AdiscopeMediaId가 있어야 함 (Info.plist 확인) - 반드시 unity의 main thread에서 실행
- App 실행 시 1회 설정 권장
- Adiscope에서는 Google Play 가족 정책을 준수해야 함 (Android 전용 - Adiscope Google Play 가족 정책 확인)
⚠️ 정책 미준수시 광고에 제한이 생김 (광고 물량 축소 및 오퍼월 진입 불가)
private string MEDIA_ID = ""; // 관리자를 통해 발급
private string MEDIA_SECRET = ""; // 관리자를 통해 발급
private string CALLBACK_TAG = ""; // 관리자를 통해 발급, 기본 ""
private string CHILD_YN = ""; // 어린이 여부를 설정 해주는 값(Google GMA에 세팅)
Adiscope.Sdk.GetCoreInstance().Initialize(MEDIA_ID, MEDIA_SECRET, CALLBACK_TAG, CHILD_YN, (isSuccess) => {
if (isSuccess) {
// Initialize Call Back
} else {
// Initialize Fail
}
});- 반드시 unity의 main thread에서 실행
- App 실행 시 1회 설정 권장
- Adiscope에서는 Google Play 가족 정책을 준수해야 함 (Android 전용 - Adiscope Google Play 가족 정책 확인)
⚠️ 정책 미준수시 광고에 제한이 생김 (광고 물량 축소 및 오퍼월 진입 불가)
private string USER_ID = ""; // set unique user id to identify the user in reward information
Adiscope.Sdk.GetCoreInstance().SetUserId(USER_ID);⚠️ Offerwall,RewardedVideo,RewardedInterstitial를 사용하기 위해 필수 설정- 64자까지 설정 가능
if (Adiscope.Sdk.GetCoreInstance().IsInitialized()) {
// get singleton instance of offerwall ad
Adiscope.Feature.OfferwallAd offerwallAd = Adiscope.Sdk.GetOfferwallAdInstance();
} else {
// Reinitialize
}- Offerwall Ad Instance는 global singleton instance이므로 여러개의 instance를 생성할 수 없음
- Offerwall Ad의 callback event handler는 등록과 해제가 자유로우나 globally static하므로 중복 등록되지 않도록 유의
if (offerwallAd != null) {
offerwallAd.OnOpened += OnOfferwallAdOpenedCallback;
offerwallAd.OnClosed += OnOfferwallAdClosedCallback;
offerwallAd.OnFailedToShow += OnOfferwallFailedToShowCallback;
}// show offerwall ad
OfferwallFilterType[] typeList = new OfferwallFilterType[] { };
// new OfferwallFilterType[] { OfferwallFilterType.CPS }
if (offerwallAd != null) {
if (offerwallAd.Show("unit1", typeList)) {
// Success
} else {
// This Show request is duplicated
}
} else {
// Reinitialize
}Show가 실행되면 (return값이 True일 경우)OnOpened와OnFailedToShow중 하나가 항상 호출되고,OnOpened가 호출되었다면 이후OnClosed가 항상 호출
private void OnOfferwallAdOpenedCallback(object sender, Adiscope.Model.ShowResult args) {
// Offerwall이 열림
}
private void OnOfferwallAdClosedCallback(object sender, Adiscope.Model.ShowResult args) {
// Offerwall이 닫힘
}
private void OnOfferwallAdFailedToShowCallback(object sender, Adiscope.Model.ShowFailure args) {
// Offerwall이 Fail
}- Show 성공 시
OnOpened,OnClosedcallback이 순차적으로 호출 - Callback은 Unity의 main thread에서 호출
OnFailedToShow시 ApdiscopeError 참고
if (Adiscope.Sdk.GetCoreInstance().IsInitialized()) {
private string URL = ""; // 관리자를 통해 발급
Adiscope.Sdk.GetOfferwallAdInstance().ShowOfferwallDetailFromUrl(URL);
} else {
// Reinitialize
}if (Adiscope.Sdk.GetCoreInstance().IsInitialized()) {
private string UNIT_ID = ""; // 관리자를 통해 발급
private string FILTERS = ""; // 관리자를 통해 확인
private string ITEM_ID = ""; // 관리자를 통해 발급
Adiscope.Sdk.GetOfferwallAdInstance().ShowOfferwallDetail(UNIT_ID, FILTERS, ITEM_ID);
} else {
// Reinitialize
}if (Adiscope.Sdk.GetCoreInstance().IsInitialized()) {
// get singleton instance of rewardedvideo ad
Adiscope.Feature.RewardedVideoAd rewardedVideoAd = Adiscope.Sdk.GetRewardedVideoAdInstance();
} else {
// Reinitialize
}- Rewarded Video Ad Instance는 global singleton instance이므로 여러개의 instance를 생성할 수 없음
- Rewarded Video Ad의 callback event handler는 등록과 해제가 자유로우나 globally static하므로 중복 등록되지 않도록 유의
if (rewardedVideoAd != null) {
rewardedVideoAd.OnLoaded += OnRewardedVideoAdLoadedCallback;
rewardedVideoAd.OnFailedToLoad += OnRewardedVideoAdFailedToLoadCallback;
rewardedVideoAd.OnOpened += OnRewardedVideoAdOpenedCallback;
rewardedVideoAd.OnClosed += OnRewardedVideoAdClosedCallback;
rewardedVideoAd.OnRewarded += OnRewardedCallback;
rewardedVideoAd.OnFailedToShow += OnRewardedVideoAdFailedToShowCallback;
} else {
// Reinitialize
}if (rewardedVideoAd != null) {
private string UNIT_ID = ""; // 관리자를 통해 발급
// load a rewarded video ad which belongs to a specific unit
rewardedVideoAd.Load(UNIT_ID);
} else {
// Reinitialize
}- 해당 유닛에 속한 ad 네크워크들의 광고를 Load
OnLoadedcallback이 호출되면 Load가 완료Load가 실행되면OnLoaded와OnFailedToLoad중 하나의 callback은 항상 호출- Rewarded Video Ad의
Load와Show는 pair로 호출 - Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음 번 Show를 준비
- Load & Show 후 다시 Load를 하려 할 때 Load 는 Show 이후 언제든 호출가능
- 광고가 Show되는 동안 다음 광고를 Load를 할 수도 있지만 이는 사용하는 mediation ad network company의 종류에 따라 달라질 수 있으므로 항상 보장되는 동작은 아님
- Show의 callback 인
OnClosed에서 다시 Load를 하는 것을 권장- Abusing 방지를 위해 Rewarded Video Ad를 연속으로 보여주는 것을 제한하여 한번 광고를 보고 나면 일정 시간이 지난 후에 다시 Show를 할 수 있도로록 Admin page에서 서비스 설정 가능
- Load 동작 수행 중에 Load를 여러 번 호출할 수 없음
- (Optional) Load의 시간이 필요해 ProgressBar 노출 추천
if (rewardedVideoAd != null) {
if (rewardedVideoAd.IsLoaded(UNIT_ID)) {
// show ad here
} else {
// do something else
}
} else {
// Reinitialize
}- 광고가 Load 되었는지 상태를 확인
if (rewardedVideoAd != null) {
if (rewardedVideoAd.IsLoaded(UNIT_ID)) {
// only one "Show" can not be requested at a time
// if Show() returns false, show is in progress somewhere else
if (rewardedVideoAd.Show()) {
// Success
} else {
// This Show request is duplicated
}
} else {
// ad is not loaded
}
} else {
// Reinitialize
}- 마지막으로 Load된 광고를 사용자에게 보여줌
- Show 호출 후에는 다시 Load를 호출
- Show method는 중복하여 호출 할 수 없음
Show가 실행되면 (return값이 True일 경우)OnOpened와OnFailedToShow중 하나가 항상 호출되고,OnOpened가 호출되었다면 이후OnClosed가 항상 호출- Rewarded Video Ad의
Load와Show는 pair로 호출- Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음번 Show를 준비
private void OnRewardedCallback(object sender, Adiscope.Model.RewardItem args) {
// RewardItem.UnitId - 해당 rewarded video ad의 unitId (Show 시 입력한 값)
// RewardItem.Type - 보상 type
// RewardItem.Amount - 보상의 양
}- 보상이 주어져야 할 경우
OnRewarded가 호출되며 그 parameter로 관련 정보가 전달 - 이 보상 정보를 바탕으로 게임 내에서 보상을 지급
OnRewarded는 보통OnOpened와OnClosed사이에 호출되는 경우가 많으나 광고 System의 상황에 따라 달라 질 수 있음OnRewarded가 호출되지 않는 경우도 존재할 수 있음(Reward 설정을 Server-to-server로 하였다면, Video 시청 후에는OnRewarded가 호출되지 않음)- Reward 정보는 abusing 방지를 위해서 Server-to-server 방식으로 전달 받는 것을 권장
- Server-to-server 방식을 선택하더라도 보상이 전달 될 시에는
OnRewarded가 호출- 이때는 Server를 통해 전달받은 정보를 기준으로 처리하고,
OnRewarded를 통해 전달받은 정보는 검증용으로 사용하거나 무시하도록 함
- 이때는 Server를 통해 전달받은 정보를 기준으로 처리하고,
private void OnRewardedVideoAdLoadedCallback(object sender, Adiscope.Model.LoadResult args) {
// Rewarded Video Load Success
}
private void OnRewardedVideoAdFailedToLoadCallback(object sender, Adiscope.Model.LoadFailure args) {
// Rewarded Video Load Fail
}
private void OnRewardedVideoAdOpenedCallback(object sender, Adiscope.Model.ShowResult args) {
// Rewarded Video 열림
}
private void OnRewardedVideoAdClosedCallback(object sender, Adiscope.Model.ShowResult args) {
// Rewarded Video 닫힘
}
private void OnRewardedVideoAdFailedToShowCallback(object sender, Adiscope.Model.ShowFailure args) {
// Rewarded Video Show Fail
}Load성공 시OnLoaded, 실패 시OnFailedToLoad가 호출Show성공 시OnOpened,OnClosed가 순차적으로 호출되고, 실패시OnFailedToShow가 호출OnFailedToLoad,OnFailedToShow시 ApdiscopeError 참고- Callback은 Unity의 main thread에서 호출
if (Adiscope.Sdk.GetCoreInstance().IsInitialized()) {
// get singleton instance of interstitial ad
Adiscope.Feature.InterstitialAd interstitialAd = Adiscope.Sdk.GetInterstitialAdInstance();
} else {
// Reinitialize
}- Interstitial Ad Instance는 global singleton instance이므로 여러개의 instance를 생성할 수 없음
- Interstitial Ad의 callback event handler는 등록과 해제가 자유로우나 globally static하므로 중복 등록되지 않도록 유의
if (interstitialAd != null) {
interstitialAd.OnLoaded += OnInterstitialAdLoadedCallback;
interstitialAd.OnFailedToLoad += OnInterstitialAdFailedToLoadCallback;
interstitialAd.OnOpened += OnInterstitialAdOpenedCallback;
interstitialAd.OnClosed += OnInterstitialAdClosedCallback;
interstitialAd.OnFailedToShow += OnInterstitialAdFailedToShowCallback;
} else {
// Reinitialize
}if (interstitialAd != null) {
private string UNIT_ID = ""; // 관리자를 통해 발급
// load a interstitial ad which belongs to a specific unit
interstitialAd.Load(UNIT_ID);
} else {
// Reinitialize
}- 해당 유닛에 속한 ad 네크워크들의 광고를 Load
OnInterstitialAdLoadedcallback이 호출되면 Load가 완료- Interstitial의
Load와Show는 pair로 호출 - Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음 번 Show를 준비
- 광고가 Show되는 동안 다음 광고를 Load를 할 수도 있지만 이는 사용하는 mediation ad network company의 종류에 따라 달라질 수 있으므로 항상 보장되는 동작은 아님
- Load 동작 수행 중에 Load를 여러 번 호출할 수 없음
- (Optional) Load의 시간이 필요해 ProgressBar 노출 추천
if (interstitialAd != null) {
if (interstitialAd.IsLoaded(UNIT_ID)) {
// show ad here
} else {
// do something else
}
} else {
// Reinitialize
}- 광고가 Load 되었는지 상태를 확인
if (interstitialAd != null) {
if (interstitialAd.IsLoaded(UNIT_ID)) {
// only one "Show" can not be requested at a time
// if Show() returns false, show is in progress somewhere else
if (interstitialAd.Show()) {
// Success
} else {
// This Show request is duplicated
}
} else {
// ad is not loaded
}
} else {
// Reinitialize
}- 마지막으로 Load된 광고를 사용자에게 보여줌
- Show 호출 후에는 다시 Load를 호출
- Show method는 중복하여 호출 할 수 없음
Show가 실행되면 (return값이 True일 경우)OnOpened와OnFailedToShow중 하나가 항상 호출되고,OnOpened가 호출되었다면 이후OnClosed가 항상 호출- Rewarded Video Ad의
Load와Show는 pair로 호출- Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음번 Show를 준비
private void OnInterstitialAdLoadedCallback(object sender, Adiscope.Model.LoadResult args) {
// Interstitial Load Success
}
private void OnInterstitialAdFailedToLoadCallback(object sender, Adiscope.Model.LoadFailure args) {
// Interstitial Load Fail
}
private void OnInterstitialAdOpenedCallback(object sender, Adiscope.Model.ShowResult args) {
// Interstitial 열림
}
private void OnInterstitialAdClosedCallback(object sender, Adiscope.Model.ShowResult args) {
// Interstitial 닫힘
}
private void OnInterstitialAdFailedToShowCallback(object sender, Adiscope.Model.ShowFailure args) {
// Interstitial Show Fail
}Load성공 시OnLoaded, 실패 시OnFailedToLoad가 호출Show성공 시OnOpened,OnClosed가 순차적으로 호출되고, 실패시OnFailedToShow가 호출OnFailedToLoad,OnFailedToShow시 ApdiscopeError 참고- Callback은 Unity의 main thread에서 호출
if (Adiscope.Sdk.GetCoreInstance().IsInitialized()) {
// get singleton instance of rewardedinterstitial ad
Adiscope.Feature.RewardedInterstitialAd rewaredInterstitialAd = Adiscope.Sdk.GetRewardedInterstitialAdInstance();
} else {
// Reinitialize
}- RewardedInterstitial Ad Instance는 global singleton instance이므로 여러개의 instance를 생성할 수 없음
- RewardedInterstitial Ad의 callback event handler는 등록과 해제가 자유로우나 globally static하므로 중복 등록되지 않도록 유의
if (rewaredInterstitialAd != null) {
rewaredInterstitialAd.OnGetUnitStatus += OnRewardedInterstitialGetUnitStatusCallback;
rewaredInterstitialAd.OnSkip += OnRewardedInterstitialAdSkipCallback;
rewaredInterstitialAd.OnOpened += OnRewardedInterstitialAdOpenedCallback;
rewaredInterstitialAd.OnClosed += OnRewardedInterstitialAdClosedCallback;
rewaredInterstitialAd.OnFailedToShow += OnRewardedInterstitialAdFailedToShowCallback;
rewaredInterstitialAd.OnRewarded += OnRewardedInterstitialRewardedCallback;
} else {
// Reinitialize
}if (rewaredInterstitialAd != null) {
rewaredInterstitialAd.PreLoadAllRewardedInterstitial();
} else {
// Reinitialize
}- Initialize Call Back 후 1회 설정 권장
- 관리자가 설정된 활성화된 모든 유닛들을 Load 진행
if (rewaredInterstitialAd != null) {
rewaredInterstitialAd.PreLoadRewardedInterstitial(new string[] { UNIT_ID1, UNIT_ID2, ... });
} else {
// Reinitialize
}- Initialize Call Back 후 1회 설정 권장
- 입력된 유닛들을 Load 진행
if (rewaredInterstitialAd != null) {
rewaredInterstitialAd.ShowRewardedInterstitial(UNIT_ID);
} else {
// Reinitialize
}- 해당 유닛이 Load되어 있으면 안내 팝업을 보여 준 뒤 해당 광고를 사용자에게 보여줌
- ShowRewardedInterstitial method는 중복하여 호출 할 수 없음
ShowRewardedInterstitial가 실행되면 (return값이 True일 경우)OnSkip와OnOpened와OnFailedToShow중 하나가 항상 호출되고,OnOpened가 호출되었다면 이후OnClosed가 항상 호출OnClosed와OnFailedToShow가 호출 되면 내부에서 해당 유닛을 자동 Load 시킴
if (rewaredInterstitialAd != null) {
rewaredInterstitialAd.GetUnitStatusRewardedInterstitial(UNIT_ID);
} else {
// Reinitialize
}- 해당 유닛의 수익화 여부, 활성화 여부를 알 수 있음
private void OnRewardedInterstitialRewardedCallback(object sender, Adiscope.Model.RewardItem args) {
// RewardItem.UnitId - 해당 rewarded video ad의 unitId (ShowRewardedInterstitial 시 입력한 값)
// RewardItem.Type - 보상 type
// RewardItem.Amount - 보상의 양
}- 보상이 주어져야 할 경우
OnRewarded가 호출되며 그 parameter로 관련 정보가 전달 - 이 보상 정보를 바탕으로 게임 내에서 보상을 지급
OnRewarded는 보통OnOpened와OnClosed사이에 호출되는 경우가 많으나 광고 System의 상황에 따라 달라 질 수 있음OnRewarded가 호출되지 않는 경우도 존재할 수 있음(Reward 설정을 Server-to-server로 하였다면, Video 시청 후에는OnRewarded가 호출되지 않음)- Reward 정보는 abusing 방지를 위해서 Server-to-server 방식으로 전달 받는 것을 권장
- Server-to-server 방식을 선택하더라도 보상이 전달 될 시에는
OnRewarded가 호출- 이때는 Server를 통해 전달받은 정보를 기준으로 처리하고,
OnRewarded를 통해 전달받은 정보는 검증용으로 사용하거나 무시하도록 함
- 이때는 Server를 통해 전달받은 정보를 기준으로 처리하고,
private void OnRewardedInterstitialGetUnitStatusCallback(object sender, Adiscope.Model.UnitStatus args) {
// args.isLive() 수익화 여부
// args.isActive() 활성화 여부
}
private void OnRewardedInterstitialAdSkipCallback(object sender, Adiscope.Model.ShowResult args) {
// RewardedInterstitial Skip for 안내 팝업
}
private void OnRewardedInterstitialAdOpenedCallback(object sender, Adiscope.Model.ShowResult args) {
// Rewarded Video 열림
}
private void OnRewardedInterstitialAdClosedCallback(object sender, Adiscope.Model.ShowResult args) {
// Rewarded Video 닫힘
}
private void OnRewardedInterstitialAdFailedToShowCallback(object sender, Adiscope.Model.ShowFailure args) {
// Rewarded Video Show Fail
}GetUnitStatusRewardedInterstitial조회 시OnGetUnitStatus가 호출ShowRewardedInterstitialSkip 시OnSkip, 성공 시OnOpened,OnClosed가 순차적으로 호출되고, 실패시OnFailedToShow가 호출OnFailedToShow시 ApdiscopeError 참고- Callback은 Unity의 main thread에서 호출
Adiscope.Sdk.GetCoreInstance().SetLuckyEventAppId(APP_ID, PUB_ID);- APP_ID, PUB_ID는 관리자에게 발급 요청
Adiscope.Sdk.GetCoreInstance().ShowLuckyEvent();- 관리자에게 전달받은
app-ads.txt를 웹사이트에 등록
- 2024년 5월 1일부터 출시/업데이트 되는 앱에 대해 3rd Party Framework의 개인정보 추가
- 'Unexpected duplicate tasks' Error








