드뎌 1년에 한번밖에 없는 추석 한가위가 찾아왔네요.

 

매년 추석마다 여행을 해외나 국내로 여행을 다녔는데 코로나로 인해 올해 추석은 꼼짝도 못하겠네요.

이제 집에서 일주일을 보낼 방법을 궁리중입니다.

넷플릭스로 정주행할까? 스포츠 채널에서 24시간 살아볼까?

여행도 좋지만 이렇게 방콕해서 즐길 수 있는 걸 찾는것도 여행 못지 않게 재미 있을것 같아요.

 

 

넷플릭스에서 이번에 오리지널 시리즈로 나온 보건교사 안은영도 완전 강추입니다.

정유미 팬이라서 그런지 더욱 몰입하게 되네요.

 

스포츠는 손흥민이 부상 당하는 바람에 ㅠㅠㅠㅠㅠ

황희찬이랑 이강인으로 만족해야 할것 같네요.

 

그럼 이번 추석 잘 지내시고 끝나고 또 인사드릴께요.

'일상' 카테고리의 다른 글

코로나 시국에 은애 방콕놀이~  (0) 2020.09.08

안드로이드에서 광고모듈하면 첫번째로 구글애드몹을 생각하실겁니다.

구글애드몹이나 모바일웹을 이용한 애드센스를 붙이는것만 생각하시는데요.

여기에 Unity Ads를 추가하면 좀 더 풍부하게 광고가 나오게 할 수 있습니다.

 

유니티에서도 안드로이드 가이드를 제공하고 있습니다.

https://unityads.unity3d.com/help/android/integration-guide-android#basic-implementation

 

Integration guide for Android (Java) - Knowledge base

Integration guide for Android (Java) Overview This guide covers basic integration for implementing Unity Ads in your native Android game. If you are an iOS developer using Objective-C, click here. If you are a Unity developer using C#, click here. Click he

unityads.unity3d.com

 

첫번째로 unity-ads.aar 파일을 다운로드 합니다.

https://github.com/Unity-Technologies/unity-ads-android/releases

 

Releases · Unity-Technologies/unity-ads-android

Unity Ads SDK 3.0 for Android. Contribute to Unity-Technologies/unity-ads-android development by creating an account on GitHub.

github.com

 

프로젝트를 우클릭해서 New -> Module 선택합니다.

Import .JAR/.AAR Package를 선택하고 다운로드한 aar 파일을 Import 해줍니다.

 

프로젝트 선택후 우클릭 OpenModule Settings 선택

Dependencies 선택후 + 버튼 클릭후 Module Dependency 선택후 unity-ads 선택

 

이렇게 해서 unity-ads를 사용하는 모듈을 추가하면 build.gradle dependencies에 unity-ads가 추가됩니다.

dependencies {
    implementation project(path: ':unity-ads')
}

 

 

이제 사용할 곳에서 import해서 사용하시면 됩니다.

import com.unity3d.ads.IUnityAdsListener;
import com.unity3d.ads.UnityAds;

 

다음은 Unity Ads SDK를 초기화 합니다.

SDK를 초기화하려면 적절한 플랫폼에 대한 프로젝트의 게임ID를 참조해야 합니다. 

안드로이드앱에서 광고 콜백을 처리하는 IUnityAdsListener 인터페이스를 구현합니다. SDK를 초기화하는 Initialize 메소드에는 이 리스너가 매개 변수로 필요합니다. 

아래는 소스 코드입니다.

 

import com.unity3d.ads.IUnityAdsListener;
import com.unity3d.ads.UnityAds;

public class InitializeAdsScript extends AppCompatActivity implements View.OnClickListener, IUnityAdsListener {

    private String unityGameID = "1234567";
    private Boolean testMode = true;

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.activity_main);
        // Declare a new listener:
        final UnityAdsListener myAdsListener = new UnityAdsListener ();
        // Add the listener to the SDK:
        UnityAds.addListener(myAdsListener);
        // Initialize the SDK:
        UnityAds.initialize (this, unityGameID, testMode);
    }

    // Implement the IUnityAdsListener interface methods:
    private class UnityAdsListener implements IUnityAdsListener {

        @Override
        public void onUnityAdsReady (String placementId) {
            // Implement functionality for an ad being ready to show.
        }

        @Override
        public void onUnityAdsStart (String placementId) {
            // Implement functionality for a user starting to watch an ad.
        }

        @Override
        public void onUnityAdsFinish (String placementId, UnityAds.FinishState finishState) {
            // Implement functionality for a user finishing an ad.
        }

        @Override
        public void onUnityAdsError (UnityAds.UnityAdsError error, String message) {
            // Implement functionality for a Unity Ads service error occurring.
        }
    }
}

 

전면광고를 표시하려면 게재 위치 ID로 표시 기능을 사용하면 됩니다.

전면광고 예제코드입니다.

import com.unity3d.ads.IUnityAdsListener;
import com.unity3d.ads.UnityAds;

public class ShowInterstitialAds extends AppCompatActivity implements View.OnClickListener, IUnityAdsListener {

    private String unityGameID = "1234567";
    private Boolean testMode = true;
    private String placementId = "video";

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.activity_main);
        // Declare a new listener:
        final UnityAdsListener myAdsListener = new UnityAdsListener ();
        // Add the listener to the SDK:
        UnityAds.addListener(myAdsListener);
        // Initialize the SDK:
        UnityAds.initialize (this, unityGameID, testMode);
    }

    // Implement a function to display an ad if the Placement is ready:
    public void DisplayInterstitialAd () {
        if (UnityAds.isReady (placementId)) {
            UnityAds.show (this, placementId);
        }
    }

    // Implement the IUnityAdsListener interface methods:
    private class UnityAdsListener implements IUnityAdsListener {

        @Override
        public void onUnityAdsReady (String placementId) {
            // Implement functionality for an ad being ready to show.
        }

        @Override
        public void onUnityAdsStart (String placementId) {
            // Implement functionality for a user starting to watch an ad.
        }

        @Override
        public void onUnityAdsFinish (String placementId, UnityAds.FinishState finishState) {
            // Implement functionality for a user finishing an ad.
        }

        @Override
        public void onUnityAdsError (UnityAds.UnityAdsError error, String message) {
            // Implement functionality for a Unity Ads service error occurring.
        }
    }
}

 

보상형광고도 마찬가지입니다. 광고시청에 대한 보상을 제공하면서 표시되는 광고입니다. 동영상 광고를 완료한 앱사용자에게 보상을 제공하려면 onUnityAdsFinish 리스너 콜백 메소드의 FinishState 결과를 사용하여 사용자가 광고 시청을 완료했는지, 보상을 받아야 하는지 확인합니다.

아래는 보상형 광고 예제 샘플입니다.

import com.unity3d.ads.IUnityAdsListener;
import com.unity3d.ads.UnityAds;

public class ShowRewardedAds extends AppCompatActivity implements View.OnClickListener, IUnityAdsListener {

    private String unityGameID = "1234567";
    private Boolean testMode = true;
    private String placementId = "rewardedVideo";

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.activity_main);
        // Declare a new listener:
        final UnityAdsListener myAdsListener = new UnityAdsListener ();
        // Add the listener to the SDK:
        UnityAds.addListener(myAdsListener);
        // Initialize the SDK:
        UnityAds.initialize (this, unityGameID, testMode);
    }

    // Implement a function to display an ad if the Placement is ready:
    public void DisplayRewardedVideoAd () {
        if (UnityAds.isReady (placementId)) {
            UnityAds.show (this, placementId);
        }
    }

    // Implement the IUnityAdsListener interface methods:
    private class UnityAdsListener implements IUnityAdsListener {

        public void onUnityAdsReady (String placementId) {
            // Implement functionality for an ad being ready to show.
        }

        @Override
        public void onUnityAdsStart (String placementId) {
            // Implement functionality for a user starting to watch an ad.
        }

        @Override
        public void onUnityAdsFinish (String placementId, UnityAds.FinishState finishState) {
            // Implement conditional logic for each ad completion status:
           if (finishState.equals(UnityAds.FinishState.COMPLETED) {
              // Reward the user for watching the ad to completion.
           } else if (result == FinishState.SKIPPED) {
              // Do not reward the user for skipping the ad.
           } else if (result == FinishState.ERROR) {
              // Log an error.
           }
        }

        @Override
        public void onUnityAdsError (UnityAds.UnityAdsError error, String message) {
            // Implement functionality for a Unity Ads service error occurring.
        }
    }
}

위와 같이 안드로이드에서도 간단하게 유니티 ads 광고를 붙일 수 있습니다.

구글애드몹 광고가 잘 나오지 않을때 효율이 좋지 않을때 유니티 광고와 병행을 한다면 더욱 좋은 결과를 만드실 수 있습니다. 

유니티로 개발하다 보면 여러가지를 손대다 보니 안드로이드로 컴파일 할때 빠뜨리게 되는 부분들이 많이 있습니다. 아래 오류도 그 중에 한가지가 되겠습니다.

 

디버그가 가능한 APK를 업로드했습니다. 보안상의 이유로 Google Play에 게시하기 전에 디버그를 사용 중지해야 합니다. 

1. 오류 내용

 

2. 오류 확인

보통 유니티를 안드로이드 컴파일하게 되면 디버그 모드를 확인할때 2군데를 확인합니다. Project Settings에 컴파일러 환경 부분과 Build Settings에 Development Build부분을 확인해서 디버그 모드인지 릴리즈 모드인지 확인하게 됩니다.

 

 

3. 해결방법 

 

만약 이 두곳이 다 릴리즈로 셋팅되어 있는데도 콘솔 업로드시 위와 같은 오류가 발생한다면 마지막으로 

확인해봐야 할 곳은 Publishing Settings에 Custom Gradle Template가 체크되어 있어서 Gradle 파일을 커스텀하게

사용했을때 mainTemplate.gradle 파일을 확인하는 방법이 있겠습니다.

경로는 Assets\Plugins\Android\mainTemplate.gradle 입니다.

 

mainTemplate.gradle에서 debuggable 속성 부분을 찾아서 true로 되어 있으면

false로 바꾸거나 삭제해주면 됩니다.

+ Recent posts