npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@adiscope.ad/adiscope-react-native

v3.9.2

Published

React Native Module for Adiscope SDK

Downloads

282

Readme

Adiscope React Native

GitHub package.json version GitHub package.json version GitHub package.json version GitHub package.json version GitHub package.json version

  • ${\color{red}Expo 지원 불가}$
  • Android Target API Level : 31+
  • Android Minimum API Level : 21
  • iOS Minimum Version : 12.0
  • Xcode Minimum Version : Xcode 15.1

Contents

Add the Adiscope package to Your Project

Adiscope Overview

웹사이트 필수 등록

Adiscope Server 연동하기

Privacy Manifest 정책 적용

Adiscope Error Information

etc

Add the Adiscope package to Your Project

1. Installation

A. Latest version Installation

npm install @adiscope.ad/adiscope-react-native
  • 프로젝트의 IDE루트 경로에서 터미널을 열고 위과 같이 실행하여 설치

B. Specific version Installation

npm install @adiscope.ad/[email protected]
  • 프로젝트의 IDE루트 경로에서 터미널을 열고 위과 같이 특정 버전을 추가로 실행하여 설치

2. Setup Android

A. Setup AndroidManifest

<application>
    <meta-data android:name="adiscope_media_id" android:value="${adiscope_media_id}"/>
    <meta-data android:name="adiscope_media_secret" android:value="${adiscope_media_secret}"/>
    <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="${adiscope_admob_id}"/>
</application>
  • Android 프로젝트의 AndroidManifest.xml파일에 다음과 같은 설정
  • meta-data 복사해서 변경 없이 추가 (아래 Module Gradle의 변수 값을 참조 함)

B. Setup Module Gradle

android {
    defaultConfig {
        manifestPlaceholders = [
                adiscope_media_id    : "media id 기입 필요",
                adiscope_media_secret: "media secret 기입 필요",
                adiscope_sub_domain  : "sub domain 기입 필요",		// 옵션값 (오퍼월 상세페이지 이동 기능, 필요시 담당자 전달 예정)
                adiscope_admob_id    : "admob_app_id 기입 필요"           // Admob 사용 시 필요
        ]
    }
}
  • 애디스콥 측에 media_id 와 media_secret, sub_domain 문의!
  • adiscope_media_id: 매체 아이디
  • adiscope_media_secret: 매체 시크릿키
  • adiscope_sub_domain: 옵션값 (오퍼월 상세페이지 이동 기능, 필요시 담당자 전달 예정)
  • adiscope_admob_id: admob을 접속 하기 위한 키
  • 프로젝트 파일 내에 {projectroot}/android/app/build.gradle 파일에 manifestPlaceholders 추가

3. Setup iOS

A. Setup Podfile

target 'AdiscopeReactNativeExample' do
  config = use_native_modules!

  pod 'AdiscopeMediaAdManager', '3.9.0'    // admanager
  pod 'AdiscopeMediaAdMob', '3.9.1'        // admob
  pod 'AdiscopeMediaAppLovin', '3.9.0'     // applovin
  pod 'AdiscopeMediaChartBoost', '3.9.0'   // chartboost
  pod 'AdiscopeMediaFAN', '3.9.1'          // fan
  pod 'AdiscopeMediaMax', '3.9.1'          // max
  pod 'AdiscopeMediaMobVista', '3.9.0'     // mobvista
  pod 'AdiscopeMediaPangle', '3.9.0'       // pangle
  pod 'AdiscopeMediaVungle', '3.9.0'       // vungle

  use_react_native!(
    :path => config[:reactNativePath],
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/.."
  )

  target 'AdiscopeReactNativeExampleTests' do
    inherit! :complete
    # Pods for testing
  end

  post_install do |installer|
    # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
    react_native_post_install(
      installer,
      config[:reactNativePath],
      :mac_catalyst_enabled => false,
      # :ccache_enabled => true
    )
  end
end
  • 프로젝트 파일 내에 {projectroot}/ios/Podfile 파일에 pod 추가
  • Third Party 네트워크사들을 확인 후 필요한 네트워크사들만 추가
  • Adapter Version이 상이할 경우 Initialize시 Xcode Log를 통해 확인 가능 AdapterChecked

B. Pod Install

pod install --repo-update
  • 프로젝트 파일 내에 ios 폴더에서 다음의 명령어를 실행해서 Library를 Xcode Project로 추가

C. Setup Plist

  • 프로젝트 파일 내에 {projectroot}/ios/{프로젝트 이름}/Info.plist 파일에 추가
가. AdiscopeMediaId, AdiscopeMediaSecret 추가
<key>AdiscopeMediaId</key>
<string>{media id 기입 필요}</string>
<key>AdiscopeMediaSecret</key>
<string>{media secret 기입 필요}</string>
나. App Tracking Permission 추가
<key>NSUserTrackingUsageDescription</key>
<string></string>
  • ex : Some ad content may require access to the user tracking.
다. SKAdNetwork 추가 (Download)
<dict>
    <key>SKAdNetworkItems</key>
    <array>
	<dict>
	    <key>SKAdNetworkIdentifier</key>
	    <string></string>
	</dict>
    </array>
</dict>
  • SKAdNetwork Download File 내용 추가 (Download)
라. Admob 사용 시 추가
<key>GADIsAdManagerApp</key>
<true/>
<key>GADApplicationIdentifier</key>
<string>{admob_app_id 기입 필요}</string>
  • "GADIsAdManagerApp" 설정 및 "GADApplicationIdentifier"의 Key 설정
마. Max, AppLovin 사용 시 추가
<key>AppLovinSdkKey</key>
<string>{applovin_app_id 기입 필요}</string>
  • AppLovinSdkKey의 Key 설정

D. AppDelegate 추가

가. Max 사용 시 추가
a. Object-C
@property (nonatomic, strong) UIWindow *window;
  • iOS 폴더 내 AppDelegate.h 파일의 AppDelegate interface 내에 추가
b. Swift
var window: UIWindow?
  • iOS 폴더 내 AppDelegate.swift 파일의 AppDelegate class 내에 추가

Adiscope Overview

1. Import

// 초기 실행
import { initialize4Adiscope, isInitialize4Adiscope, setUserId4Adiscope } from '@adiscope.ad/adiscope-react-native';
// Offerwall, RewardedVideo, Interstitial, RewardedInterstitial
import { useOfferwall4Adiscope, useRewardedVideo4Adiscope, useInterstitial4Adiscope,
  useRewardedInterstitial4Adiscope } from '@adiscope.ad/adiscope-react-native';
// Other
import { getSDKVersion4Adiscope, getNetworksVersions4Adiscope, getUnitStatus4Adiscope, setVolumeOff4Adiscope, 
  showAdmobMediationDebugger4Adiscope, showMaxMediationDebugger4Adiscope } from '@adiscope.ad/adiscope-react-native';
  • Adiscope을 사용하기 위해서 추가

2. Initialize

A. Code에서 Media 없이 Initialize 방법

const [statusInitialize, setStatusInitialize] = useState({
  isSuccess: false,
});

const result = await initialize4Adiscope()
setStatusInitialize(result);
  • Android는 AndroidManifest 파일과 Module Gradle 파일 세팅 필요
  • iOS는 Plist 파일 세팅 필요
  • App 실행 시 1회 설정 권장
  • Adiscope에서는 Google Play 가족 정책을 준수해야 함 (Android 전용 - Adiscope Google Play 가족 정책 확인)
    • ${정책\ {\color{red}미준수시}}\ 광고에\ 제한이\ 생김$ (광고 물량 축소 및 오퍼월 진입 불가)

B. Code에서 직접 Media 넣어서 Initialize 방법

const [statusInitialize, setStatusInitialize] = useState({
  isSuccess: false,
});

const mediaId = "";        // 관리자를 통해 발급
const mediaSecret = "";    // 관리자를 통해 발급
const callbackTag = "";    // 관리자를 통해 발급, 기본 ""
const childYN = "";        // 어린이 여부를 설정 해주는 값(Google GMA에 세팅)
const result = await initialize4Adiscope(mediaId, mediaSecret, callbackTag, childYN)
setStatusInitialize(result);
  • App 실행 시 1회 설정 권장
  • Adiscope에서는 Google Play 가족 정책을 준수해야 함 (Android 전용 - Adiscope Google Play 가족 정책 확인)
    • ${정책\ {\color{red}미준수시}}\ 광고에\ 제한이\ 생김$ (광고 물량 축소 및 오퍼월 진입 불가)

C. Callbacks

useEffect(() => {
  console.log(statusInitialize['isSuccess']);
}, [statusInitialize]);
  • Initialize를 실행 해야 Callbacks 호출
  • statusInitialize로 Initialize 결과를 받을 수 있음

3. 사용자 정보 설정

const userId = "";        // set unique user id to identify the user in reward information
await setUserId4Adiscope(userId);
  • Offerwall, RewardedVideo, RewardedInterstitial를 사용하기 위해 ${\color{red}필수}$ 설정
  • 64자까지 설정 가능

4. Offerwall

A. Hook 호출

const { showOfferwall4Adiscope, showOfferwallDetail4Adiscope, showOfferwallDetailFromUrl4Adiscope, 
  openedOfferwall4Adiscope, closedOfferwall4Adiscope, failedToShowOfferwall4Adiscope } = useOfferwall4Adiscope();
  • 함수 및 콜백 변수를 사용 하기 위해서 선언

B. Show

const unitId = "";        // 관리자를 통해 발급
await showOfferwall4Adiscope(unitId);
  • Show가 실행되면 (return값이 True일 경우) openedOfferwall4AdiscopefailedToShowOfferwall4Adiscope 중 하나가 항상 호출되고, openedOfferwall4Adiscope가 호출되었다면 이후 closedOfferwall4Adiscope가 항상 호출

C. Callbacks

useEffect(() => {
  if (openedOfferwall4Adiscope) {
    console.log(openedOfferwall4Adiscope['unitId']);
  }
}, [openedOfferwall4Adiscope]);
useEffect(() => {
  if (closedOfferwall4Adiscope) {
    console.log(closedOfferwall4Adiscope['unitId']);
  }
}, [closedOfferwall4Adiscope]);
useEffect(() => {
  if (failedToShowOfferwall4Adiscope) {
    console.log(failedToShowOfferwall4Adiscope['unitId'] + ", " + failedToShowOfferwall4Adiscope['errorDescription'] + ", " + failedToShowOfferwall4Adiscope['errorXB3TraceID']);
  }
}, [failedToShowOfferwall4Adiscope]);
  • Initialize를 실행 해야 Callbacks 호출
  • Show 성공 시 openedOfferwall4Adiscope, closedOfferwall4Adiscope callback이 순차적으로 호출
  • failedToShowOfferwall4AdiscopeAdiscopeError 참고

5. RewardedVideo

A. Hook 호출

const { loadRewardedVideo4Adiscope, isLoadedRewardedVideo4Adiscope, showRewardedVideo4Adiscope,
  loadedRewardedVideo4Adiscope, failedToLoadRewardedVideo4Adiscope, openedRewardedVideo4Adiscope,
  closedRewardedVideo4Adiscope, rewardedRewardedVideo4Adiscope,
  failedToShowRewardedVideo4Adiscope } = useRewardedVideo4Adiscope();
  • 함수 및 콜백 변수를 사용 하기 위해서 선언

B. Load

const unitId = "";      // 관리자를 통해 발급
await loadRewardedVideo4Adiscope(unitId);
  • 해당 유닛에 속한 ad 네크워크들의 광고를 load
  • Load가 실행되면 loadedRewardedVideo4AdiscopefailedToLoadRewardedVideo4Adiscope 중 하나의 callback은 항상 호출
  • loadedRewardedVideo4Adiscope callback이 호출되면 load가 완료
  • Load 동작 수행 중에 Load를 여러 번 호출할 수 없음
  • Rewarded Video Ad의 LoadShow는 pair로 호출
  • Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음 번 Show를 준비
  • Load & Show 후 다시 Load를 하려 할 때 Load 는 Show 이후 언제든 호출가능
    • 광고가 Show되는 동안 다음 광고를 load를 할 수도 있지만 이는 사용하는 mediation ad network company의 종류에 따라 달라질 수 있으므로 항상 보장되는 동작은 아님
  • Show의 callback 인 closedRewardedVideo4Adiscope에서 다시 Load를 하는 것을 권장
    • Abusing 방지를 위해 Rewarded Video Ad를 연속으로 보여주는 것을 제한하여 한번 광고를 보고 나면 일정 시간이 지난 후에 다시 Show를 할 수 있도로록 Admin page에서 서비스 설정 가능
  • (Optional) Load의 시간이 필요해 ProgressBar 노출 추천

C. IsLoaded

const unitId = "";      // 관리자를 통해 발급
const result = await isLoadedRewardedVideo4Adiscope(unitId);
if (result) {
  // show ad here
} else {
  // do something else
}
  • 광고가 Load 되었는지 상태를 확인

D. Show

const unitId = "";      // 관리자를 통해 발급
const result = await isLoadedRewardedVideo4Adiscope(unitId);
if (result) {
  const resultShow = await showRewardedVideo4Adiscope();
  if (resultShow) {
    // Success
  } else {
    // This Show request is duplicated
  }
} else {
  // ad is not loaded
}
  • 마지막으로 Load된 광고를 사용자에게 보여줌
  • Show 후에는 다시 Load를 호출 할 수 있음
  • Show method는 중복하여 호출 할 수 없음
  • Show가 실행되면 (return값이 True일 경우) openedRewardedVideo4AdiscopefailedToShowRewardedVideo4Adiscope 중 하나가 항상 호출되고, openedRewardedVideo4Adiscope가 호출되었다면 이후 closedRewardedVideo4Adiscope가 항상 호출
  • Rewarded Video Ad의 LoadShow는 pair로 호출
    • Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음번 Show를 준비 할 수 있음

E. Callback Reward

useEffect(() => {
  if (rewardedRewardedVideo4Adiscope) {
    console.log(rewardedRewardedVideo4Adiscope['amount'] + rewardedRewardedVideo4Adiscope['unit']);
  }
}, [rewardedRewardedVideo4Adiscope]);
  • Initialize를 실행 해야 Callbacks 호출
  • 보상이 주어져야 할 경우 rewardedRewardedVideo4Adiscope가 호출되며 그 parameter로 관련 정보가 전달
  • 이 보상 정보를 바탕으로 게임 내에서 보상을 지급
  • rewardedRewardedVideo4Adiscope는 보통 openedRewardedVideo4AdiscopeclosedRewardedVideo4Adiscope 사이에 호출되는 경우가 많으나 광고 System의 상황에 따라 달라 질 수 있음
  • rewardedRewardedVideo4Adiscope가 호출되지 않는 경우도 존재할 수 있음(Reward 설정을 Server-to-server로 하였다면, Video 시청 후에는 rewardedRewardedVideo4Adiscope가 호출되지 않음)
  • Reward 정보는 abusing 방지를 위해서 Server-to-server 방식으로 전달 받는 것을 권장
  • Server-to-server 방식을 선택하더라도 보상이 전달 될 시에는 rewardedRewardedVideo4Adiscope가 호출
    • 이때는 Server를 통해 전달받은 정보를 기준으로 처리하고, rewardedRewardedVideo4Adiscope를 통해 전달받은 정보는 검증용으로 사용하거나 무시하도록 함

F. Callback Others

useEffect(() => {
  if (loadedRewardedVideo4Adiscope) {
    console.log(loadedRewardedVideo4Adiscope['unitId']);
  }
}, [loadedRewardedVideo4Adiscope]);
useEffect(() => {
  if (failedToLoadRewardedVideo4Adiscope) {
    console.log(failedToLoadRewardedVideo4Adiscope['unitId'] + ", " + failedToLoadRewardedVideo4Adiscope['errorDescription'] + ", " + failedToLoadRewardedVideo4Adiscope['errorXB3TraceID']);
  }
}, [failedToLoadRewardedVideo4Adiscope]);
useEffect(() => {
  if (openedRewardedVideo4Adiscope) {
    console.log(openedRewardedVideo4Adiscope['unitId']);
  }
}, [openedRewardedVideo4Adiscope]);
useEffect(() => {
  if (closedRewardedVideo4Adiscope) {
    console.log(closedRewardedVideo4Adiscope['unitId']);
  }
}, [closedRewardedVideo4Adiscope]);
useEffect(() => {
  if (failedToShowRewardedVideo4Adiscope) {
    console.log(failedToShowRewardedVideo4Adiscope['unitId'] + ", " + failedToShowRewardedVideo4Adiscope['errorDescription'] + ", " + failedToShowRewardedVideo4Adiscope['errorXB3TraceID']);
  }
}, [failedToShowRewardedVideo4Adiscope]);
  • Initialize를 실행 해야 Callbacks 호출
  • Load 성공 시 loadedRewardedVideo4Adiscope, 실패 시 failedToLoadRewardedVideo4Adiscope가 호출
  • Show 성공 시 openedRewardedVideo4Adiscope, closedRewardedVideo4Adiscope가 순차적으로 호출되고, 실패시 failedToShowRewardedVideo4Adiscope가 호출
  • failedToLoadRewardedVideo4Adiscope, failedToShowRewardedVideo4AdiscopeAdiscopeError 참고

6. Interstitial

A. Hook 호출

const { loadInterstitial4Adiscope, isLoadedInterstitial4Adiscope, showInterstitial4Adiscope,
  loadedInterstitial4Adiscope, failedToLoadInterstitial4Adiscope, openedInterstitial4Adiscope,
  closedInterstitial4Adiscope, failedToShowInterstitial4Adiscope } = useInterstitial4Adiscope();
  • 함수 및 콜백 변수를 사용 하기 위해서 선언

B. Load

const unitId = "";      // 관리자를 통해 발급
await loadInterstitial4Adiscope(unitId);
  • 해당 유닛에 속한 ad 네크워크들의 광고를 Load
  • loadedInterstitial4Adiscope callback이 호출되면 Load가 완료
  • Interstitial의 LoadShow는 pair로 호출
  • Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음 번 Show를 준비
  • 광고가 Show되는 동안 다음 광고를 load를 할 수도 있지만 이는 사용하는 mediation ad network company의 종류에 따라 달라질 수 있으므로 항상 보장되는 동작은 아님
  • Load 동작 수행 중에 Load를 여러 번 호출할 수 없음
  • (Optional) Load의 시간이 필요해 ProgressBar 노출 추천

C. IsLoaded

const unitId = "";      // 관리자를 통해 발급
const result = await isLoadedInterstitial4Adiscope(unitId);
if (result) {
  // show ad here
} else {
  // do something else
}
  • 광고가 Load 되었는지 상태를 확인

D. Show

const unitId = "";      // 관리자를 통해 발급
const result = await isLoadedInterstitial4Adiscope(unitId);
if (result) {
  bool resultShow = await showInterstitial4Adiscope();
  if (resultShow) {
    // Success
  } else {
    // This Show request is duplicated
  }
} else {
  // ad is not loaded
}
  • 마지막으로 load된 광고를 사용자에게 보여줌
  • Show 호출 후에는 다시 load를 호출
  • Show method는 중복하여 호출 할 수 없음
  • Show가 실행되면 (return값이 True일 경우) loadedInterstitial4AdiscopefailedToLoadInterstitial4Adiscope 중 하나가 항상 호출되고, openedInterstitial4Adiscope가 호출되었다면 이후 closedInterstitial4Adiscope가 항상 호출
  • Interstitial Ad의 LoadShow는 pair로 호출
    • Load를 한 후 Show를 하고, 광고를 Show한 후에는 다시 Load를 하여 다음번 Show를 준비 할 수 있음

E. Callback

useEffect(() => {
  if (loadedInterstitial4Adiscope) {
    console.log(loadedInterstitial4Adiscope['unitId']);
  }
}, [loadedInterstitial4Adiscope]);
useEffect(() => {
  if (failedToLoadInterstitial4Adiscope) {
    console.log(failedToLoadInterstitial4Adiscope['unitId'] + ", " + failedToLoadInterstitial4Adiscope['errorDescription'] + ", " + failedToLoadInterstitial4Adiscope['errorXB3TraceID']);
  }
}, [failedToLoadInterstitial4Adiscope]);
useEffect(() => {
  if (openedInterstitial4Adiscope) {
    console.log(openedInterstitial4Adiscope['unitId']);
  }
}, [openedInterstitial4Adiscope]);
useEffect(() => {
  if (closedInterstitial4Adiscope) {
    console.log(closedInterstitial4Adiscope['unitId']);
  }
}, [closedInterstitial4Adiscope]);
useEffect(() => {
  if (failedToShowInterstitial4Adiscope) {
    console.log(failedToShowInterstitial4Adiscope['unitId'] + ", " + failedToShowInterstitial4Adiscope['errorDescription'] + ", " + failedToShowInterstitial4Adiscope['errorXB3TraceID']);
  }
}, [failedToShowInterstitial4Adiscope]);
  • Initialize를 실행 해야 Callbacks 호출
  • Load 성공 시 loadedInterstitial4Adiscope, 실패 시 failedToLoadInterstitial4Adiscope가 호출
  • Show 성공 시 openedInterstitial4Adiscope, closedInterstitial4Adiscope가 순차적으로 호출되고, 실패 시 failedToShowInterstitial4Adiscope가 호출
  • failedToLoadInterstitial4Adiscope, failedToShowInterstitial4AdiscopeAdiscopeError 참고

7. RewardedInterstitial

A. Hook 호출

const { preLoadAllRewardedInterstitial4Adiscope, preLoadRewardedInterstitial4Adiscope,
  showRewardedInterstitial4Adiscope, skipRewardedInterstitial4Adiscope, rewardedRewardedInterstitial4Adiscope,
  openedRewardedInterstitial4Adiscope, closedRewardedInterstitial4Adiscope,
  failedToShowRewardedInterstitial4Adiscope } = useRewardedInterstitial4Adiscope();
  • 함수 및 콜백 변수를 사용 하기 위해서 선언

B. PreLoadAll

await preLoadAllRewardedInterstitial4Adiscope();
  • Initialize Call Back 후 1회 설정 권장
  • 관리자가 설정된 활성화된 모든 유닛들을 Load 진행

C. Unit 지정 PreLoad

const unitIds = [];
unitIds.push(unitId1);
unitIds.push(unitId2);
await preLoadRewardedInterstitial4Adiscope(unitIds);
  • Initialize Call Back 후 1회 설정 권장
  • 입력된 유닛들을 Load 진행

D. Show

const unitId = "";      // 관리자를 통해 발급
const result = await showRewardedInterstitial4Adiscope(unitId);
  • 해당 유닛이 Load되어 있으면 안내 팝업을 보여 준 뒤 해당 광고를 사용자에게 보여줌
  • Show method는 중복하여 호출 할 수 없음
  • showRewardedInterstitial4Adiscope가 실행되면 (return값이 True일 경우) skipRewardedInterstitial4AdiscopeopenedRewardedInterstitial4AdiscopefailedToShowRewardedInterstitial4Adiscope 중 하나가 항상 호출되고, openedRewardedInterstitial4Adiscope가 호출되었다면 이후 closedRewardedInterstitial4Adiscope가 항상 호출
  • closedRewardedInterstitial4AdiscopefailedToShowRewardedInterstitial4Adiscope가 호출 되면 내부에서 해당 유닛을 자동 Load 시킴

E. Callbacks Reward

useEffect(() => {
  if (rewardedRewardedInterstitial4Adiscope) {
    console.log(rewardedRewardedInterstitial4Adiscope['amount'] + rewardedRewardedInterstitial4Adiscope['unit']);
  }
}, [rewardedRewardedInterstitial4Adiscope]);
  • Initialize를 실행 해야 Callbacks 호출
  • 보상이 주어져야 할 경우 rewardedRewardedInterstitial4Adiscope가 호출되며 그 parameter로 관련 정보가 전달
  • 이 보상 정보를 바탕으로 게임 내에서 보상을 지급
  • rewardedRewardedInterstitial4Adiscope는 보통 openedRewardedInterstitial4AdiscopeclosedRewardedInterstitial4Adiscope 사이에 호출되는 경우가 많으나 광고 System의 상황에 따라 달라 질 수 있음
  • rewardedRewardedInterstitial4Adiscope가 호출되지 않는 경우도 존재할 수 있음(Reward 설정을 Server-to-server로 하였다면, Video 시청 후에는 rewardedRewardedInterstitial4Adiscope가 호출되지 않음)
  • Reward 정보는 abusing 방지를 위해서 Server-to-server 방식으로 전달 받는 것을 권장
  • Server-to-server 방식을 선택하더라도 보상이 전달 될 시에는 rewardedRewardedInterstitial4Adiscope가 호출
    • 이때는 Server를 통해 전달받은 정보를 기준으로 처리하고, rewardedRewardedInterstitial4Adiscope를 통해 전달받은 정보는 검증용으로 사용하거나 무시하도록 함

F. Callback Others

useEffect(() => {
  if (skipRewardedInterstitial4Adiscope) {
    console.log(skipRewardedInterstitial4Adiscope['unitId']);
  }
}, [skipRewardedInterstitial4Adiscope]);
useEffect(() => {
  if (openedRewardedInterstitial4Adiscope) {
    console.log(openedRewardedInterstitial4Adiscope['unitId']);
  }
}, [openedRewardedInterstitial4Adiscope]);
useEffect(() => {
  if (closedRewardedInterstitial4Adiscope) {
    console.log(closedRewardedInterstitial4Adiscope['unitId']);
  }
}, [closedRewardedInterstitial4Adiscope]);
useEffect(() => {
  if (failedToShowRewardedInterstitial4Adiscope) {
    console.log(failedToShowRewardedInterstitial4Adiscope['unitId'] + ", " + failedToShowRewardedInterstitial4Adiscope['errorDescription'] + ", " + failedToShowRewardedInterstitial4Adiscope['errorXB3TraceID']);
  }
}, [failedToShowRewardedInterstitial4Adiscope]);
  • Initialize를 실행 해야 Callbacks 호출
  • Show 성공 후 Skip 시 skipRewardedInterstitial4Adiscope가 호출
  • Show 성공 후 영상 시청 시 openedRewardedInterstitial4Adiscope, closedRewardedInterstitial4Adiscope가 순차적으로 호출되고, 실패 시 failedToShowRewardedInterstitial4Adiscope가 호출
  • failedToShowRewardedInterstitial4AdiscopeAdiscopeError 참고

8. Etc

A. Adiscope SDK Version

const result = await getSDKVersion4Adiscope();
  • Android와 iOS의 Core SDK Version 확인

B. Adiscope Network Versions

const result = await getNetworksVersions4Adiscope();
  • Android와 iOS의 Third Party SDK Versions 확인

C. Set Rewarded Check Param

const result = await setRewardedCheckParam4Adiscope(param);
  • Rewarded callback 시 parameters을 추가
  • 해당 정보는 Rewarded 지급 등에 있어 구분하는데 사용 할 수 있음
  • 내부 설정 후 사용 가능 ( 담당자에게 요청 부탁 )
  • param은 Base64 Encoded(UTF8)를 처리 후 1000자내로 설정

D. Volume

const isOff = true;  // Ad Sound Off
const isOff = false; // Ad Sound On (Default)
await setVolumeOff4Adiscope(isOff);
if (isOff) {
  console.log("Ad Sound Off");
} else {
  console.log("Ad Sound On");
}
  • Admob, AppLovin, Mintegral, Verve 만 적용 가능

웹사이트 필수 등록 (Android 전용)

  • 관리자에게 전달받은 app-ads.txt를 웹사이트에 등록

Adiscope Server 연동하기

Privacy Manifest 정책 적용 (iOS 전용)

  • 2024년 5월 1일부터 출시/업데이트 되는 앱에 대해 3rd Party Framework의 개인정보 추가

Adiscope Error Information

Adiscope Sample App

Releases