> For the complete documentation index, see [llms.txt](https://one-admax-organization.gitbook.io/one-admax-sdk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://one-admax-organization.gitbook.io/one-admax-sdk/unityplugin.md).

# 04. Unity-Plugin Guide

## 0. 개발 버전

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Unity</strong></td><td>2022.3.62f3</td></tr><tr><td><strong>Java SDK (Java 11)</strong></td><td>ONE AdMax SDK v1.2.5</td></tr></tbody></table>

## 1. Requirements

* Unity 2022.3.62f3 이상
* Android SDK version
  * Minimum API Level 16 이상
  * Target API Level 33 이상

{% hint style="info" %}
Android API 레벨은 Project Settings > Player > Other Settings 에서 설정할 수 있습니다.
{% endhint %}

플러그인용 Unity 패키지는 ([링크](<https://github.com/ONE-AdMax >))에서 확인하실 수 있습니다.\
(The Unity package for the plugin can be found at link.)

{% embed url="<https://github.com/ONE-AdMax/ONEAdMax-Unity/releases>" %}

### Importing ONE AdMax for Unity Plugin

Unity 메뉴 바에서 Assets > Import Package > Custom Package를 클릭합니다.

<figure><img src="/files/sBY23Wl8q80yzs1xSWMQ" alt=""><figcaption></figcaption></figure>

**`Assets/OneStoreCorpPlugins/com.oneadmax.global`** 폴더가 생성됩니다.

> [EDM4U(External Dependency Manager for Unity)](https://github.com/googlesamples/unity-jar-resolver)가 필수로 같이 배포됩니다.\
> 만약, 이미 사용하고 있다면 `Import Package` 단계에서 `ExternalDependencyManager` **'체크 해제'** 후 적용해주세요.

### 외부 종속성 포함

프로젝트에 레파지토리 및 종속성이 포함되도록 하려면 다음 단계를 따릅니다.\
**`Project Settings > Player > Publishing Settings > Build`**

아래의 두 가지를 체크합니다.

* Custom Main Manifest
* Custom Main Gradle Template
* Custom Gradle Settings Template

<figure><img src="/files/KjjuNC0m76yf1p6pzYs0" alt=""><figcaption></figcaption></figure>

**`Assets > External Dependency Manager > Android Resolver > Force Resolve`** 를 선택합니다.

`settingsTemple.gradle` 파일에 Maven Repository 주소가 적용됩니다.

<figure><img src="/files/T5F72fEc6chjKGsFdrMc" alt=""><figcaption></figcaption></figure>

`mainTemplete.gradle` 파일에 Maven Module 이 적용됩니다.

<figure><img src="/files/DpD6X43dgxxgxfd9ODeR" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
ONEAdMax for Unity 플러그인 종속성은 다음에 나열되어 있습니다.\
Assets/OneStoreCorpPlugins/com.oneadmax.global/Editor/ONEAdMaxDependencies.xml
{% endhint %}

***

## 매체 키 발급 및 적용하기

{% content-ref url="/pages/8I9cJ5JTCFsISYVxGMh5" %}
[01. 매체 키 발급 방법](/one-admax-sdk/01..md)
{% endcontent-ref %}

매체키를 발급 받았다면 `AndroidManifest.xml`에 `<meta-data />`를 설정해야 합니다.

```csharp
<manifest>
    ...
    <application>
        ...
        <activity android:name="com.unity3d.player.UnityPlayerActivity">
            ...
        </activity>

        <meta-data android:name="com.oneadmax.global.appkey" android:value="your app key"/>
    </application>
</manifest>
```

{% hint style="warning" %}
꼭 확인해주세요!

* 매체키를 AndroidManifest.xml 에 넣었는지 확인해주세요.
* 매체키는 Unity Plugin 과 상관없이 Java SDK 에서 읽는 값이기  때문에 해당 meta-data 의 위치가 application element 내부에 있어야 합니다.
  {% endhint %}

## SDK 요구 권한

```csharp
<manifest>
    ...
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    ...
</manifest>
```

## SDK 초기화(SDK Initialize)

***

## SDK Initialize

광고를 로드하기 전에 앱이 ONEAdMax를 초기화해야 합니다.\
`ONEAdMaxClient.Initialize()` 초기화는 최초 한 번만 수행해야 합니다.

```csharp
...
using ONEAdMax;
...
public class ONEAdMaxDemo : MonoBehaviour
{
    private static bool _isInitialized = false;
    
    void Start()
    {
        if (!_isInitialized)
        {
            // Initialize the ONEAdMax SDK.
            ONEAdMaxClient.Initialize(() =>
            {
                // This callback is called once the ONEAdMax SDK is initialized.
                _isInitialized = true
            });
        }
    }
}
```

### Log Settings

개발을 위해 ONEAdMax의 자세한 로그를 노출할 수 있습니다. (default : false)

```csharp
ONEAdMaxClient.SetLogEnable(true);
```

### GDPR Settings

EU의 GDPR (General Data protection Regulation) 법안에 대응하기 위해 아래 API를 추가합니다.\
GDPR 동의가 필요한 유저에 한 해 아래 API를 호출하시기 바랍니다. (default : true)

```csharp
ONEAdMaxClient.GdprConsentAvailable(true);
```

### COPPA Settings <a href="#coppa" id="coppa"></a>

COPPA([Children's Online Privacy Protection Rule](https://www.ftc.gov/legal-library/browse/rules/childrens-online-privacy-protection-rule-coppa))법안에 대응하기 위해 아래 API를 추가 합니다. 해당 디바이스에서는 모든 광고 타입의 광고 요청에 대해 No ad 처리 됩니다. (default : false)

```csharp
ONEAdMaxClient.tagForChildDirectedTreatment(false);
```

### 애플리케이션 종료

애플리케이션이 종료될 때 메모리에 할당된 리소스(View, Memory)를 해제합니다.

```csharp
void OnApplicationQuit()
{
    ONEAdMaxClient.Destroy();
}
```

***

## 미디에이션 설정(링크)

안정적인 Fill Rates와 eCPM을 위해 워터폴 미디에이션 설정을 추천 합니다.

{% content-ref url="/pages/4qn0DUhnsshEsiXcSFJs" %}
[미디에이션 시작하기](/one-admax-sdk/sdk.md)
{% endcontent-ref %}

***

## 광고 형식 선택하기

### Reward Video ADs

보상을 제공하는 비디오 광고입니다.\
비디오 광고 종료 시 Complete event callback으로 광고 참여 완료 정보를 전달합니다.

{% content-ref url="/pages/GGdWdJoTelsxq9L1pjtN" %}
[4-1. 보상형 비디오 광고 for Unity](/one-admax-sdk/unityplugin/rewardedvideo.md)
{% endcontent-ref %}

### Interstitial ADs

&#x20;앱의 화면 전체를 덮는 광고입니다.\
완료되었거나 유저에 의해 중단 되었을 경우 앱의 화면으로 전환됩니다.

{% content-ref url="/pages/ZYJW27tz9vprAJlWRvoC" %}
[4-2. 전면 광고 for Unity](/one-admax-sdk/unityplugin/interstitial.md)
{% endcontent-ref %}

### Banner ADs

앱의 일부를 차지하는 직사각형 광고를 표시합니다.\
위치를 설정하고 시간을 설정하여 자동으로 새로고침할 수 있습니다.

{% content-ref url="/pages/jCfHjI2xEmiXXHKLVmCq" %}
[4-3. 배너 광고 for Unity](/one-admax-sdk/unityplugin/banner.md)
{% endcontent-ref %}

### Interstitial Video ADs (Non Reward)

비디오 광고와 형태는 동일하지만 리워드가 제공되지 않는 광고 타입입니다.

{% content-ref url="/pages/5ayPO0pNRxZ9AYjG8uTg" %}
[4-4. 전면 비디오 광고 for Unity (비보상형)](/one-admax-sdk/unityplugin/video.md)
{% endcontent-ref %}
