Cara memasang iklan Unity di Android Studio

Cara memasang iklan Unity di Android Studio

بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيم

Hallo om pengguna Source Code Aliendroid, sesuai dengan masukan para member untuk membuat tulisan-tulisan seputar monetize App Andrioid. Dan dikarenakan saat ini musimnya Limits Akun Admob (Nov 2020) mungkin pembahasan di artikel pertama ini bisa sedikit membantu untuk tetap me-monetize app. Salah satunya dengan menerapkan iklan unity (Unity Ads).
Unity Ads adalah fasilitas yang diberikan oleh pihak Unity Technologies untuk membantu para developer / publisher me-monetize game atau aplikasi, baik itu menggunakan Unity game engine atau Android Studio. Untuk menjadi publisher unity ads anda harus registrasi terlebih dahulu dan mendaftarkan projek/aplikasi/game untuk mendapatkan Game ID dan Placement ID.

Download dan Simpan file *aar
Setelah mandapatkan Game Id dan Placement Id, implementasikan Id tersebut kedalam projek, pada tutorial ini penulis menggunakan IDE Android Studio 4.1 dengan Unity_Ads.aar.  Sebagai bahan latihan silahkan buat project baru atau buka project yang telah buat. Penulis berasumsi bahwa pembaca sudah paham cara membuat project baru di Android Studio.

Simpan Unity_Ads.aar didalam folder libs diprojek, dan panggil format *.aar tersebut kedalam gradle.




Pada bagian gradle (Gambar/project contoh ) tambahkan baris code 31 - 38 untuk memanggil file *.aar yang ada didalam folder libs, dan implementasikan file *.aar tersebut sesuai dengan baris code 46. Silahkan copy baris code yang dibold

plugins {
    id 'com.android.application'
}

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"

    defaultConfig {
        applicationId "com.aliendroid.latihanunityads"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

allprojects {
    repositories {
        jcenter()
        flatDir {
            dirs 'libs'
        }
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.13.1'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    implementation(name:'unity-ads', ext:'aar')
}

Initializing the Unity Ads SDK
Sebelum menambahkan jenis iklan baik itu banner ataupun intertitial, lakukan Initializing pada activity pertama aplikasi, pada contoh penulis memulai activity cengan nama MainActivity.java. Untuk memudahkan latihan, penulis pisahkan antara code unity (bold) dengan code contoh. Code yang di bold yang harus anda copy atau pasang di java.

MainActivity.java

package com.aliendroid.latihanunityads;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

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

public class MainActivity extends AppCompatActivity {

    private  boolean TESTMODE_UNITY_ADS = true;
    private String unityGameID = "3896203";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final UnityAdsListener myAdsListener = new UnityAdsListener();
        UnityAds.initialize(this, unityGameID, myAdsListener, TESTMODE_UNITY_ADS);

    }

    private static class UnityAdsListener implements IUnityAdsListener {
        @Override
        public void onUnityAdsReady(String placementId) {
        }
        @Override
        public void onUnityAdsStart(String placementId) {
        }
        @Override
        public void onUnityAdsFinish(String placementId, UnityAds.FinishState finishState) {
        }
        @Override
        public void onUnityAdsError(UnityAds.UnityAdsError error, String message) {
        }
    }
}

Pada baris code terdapat TESTMODE_UNITY_ADS = true yang berguna untuk melakukan pengujian iklan, silahkan ubah ke TESTMODE_UNITY_ADS = false jika game/aplikasi siap untuk di publish.

Banned Ads
Untuk menambah iklan banner diperlukan pengaturan code pada file xml dan java. Pada latihan penulis akan menyimpan format banner  di res-layout-activity_main.xml dan memanggil format tersebut kedalam code java MainActivity.java dengan placement id "bannerid".

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RelativeLayout
        android:id="@+id/bottomBanner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_gravity="center"
        android:gravity="center"></RelativeLayout>
</RelativeLayout>

MainActivity.java

package com.aliendroid.latihanunityads;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RelativeLayout;

import com.unity3d.ads.IUnityAdsListener;
import com.unity3d.ads.UnityAds;
import com.unity3d.services.banners.BannerView;
import com.unity3d.services.banners.UnityBannerSize;

public class MainActivity extends AppCompatActivity {

    private  boolean TESTMODE_UNITY_ADS = true;
    private String unityGameID = "3896203";

    private String Unity_BANNER = "bannerid";
    BannerView bottomBanner;
    RelativeLayout bottomBannerView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final UnityAdsListener myAdsListener = new UnityAdsListener();
        UnityAds.initialize(this, unityGameID, myAdsListener, TESTMODE_UNITY_ADS);

        bottomBanner = new BannerView(MainActivity.this, Unity_BANNER, new UnityBannerSize(320, 50));
        bottomBannerView = findViewById(R.id.bottomBanner);
        bottomBannerView.addView(bottomBanner);
        bottomBanner.load();
    }

    private static class UnityAdsListener implements IUnityAdsListener {
        @Override
        public void onUnityAdsReady(String placementId) {
        }
        @Override
        public void onUnityAdsStart(String placementId) {
        }
        @Override
        public void onUnityAdsFinish(String placementId, UnityAds.FinishState finishState) {
        }
        @Override
        public void onUnityAdsError(UnityAds.UnityAdsError error, String message) {
        }
    }
}

Intertitial Ads
Intertitial ads pada unity berupa iklan video yang bisa anda implementasikan saat perpindahan activity atau klik pada item tertentu. Pada latihan penulis akan menempatkan iklan intertitial pada saat menekan tombol, untuk itu silahkan edit activity_main.xml untuk menambahkan tombol.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_inter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Intertitial Ads" />

    <RelativeLayout
        android:id="@+id/bottomBanner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_gravity="center"
        android:gravity="center"></RelativeLayout>
</RelativeLayout>

MainActivity.java

package com.aliendroid.latihanunityads;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;

import com.unity3d.ads.IUnityAdsListener;
import com.unity3d.ads.UnityAds;
import com.unity3d.services.banners.BannerView;
import com.unity3d.services.banners.UnityBannerSize;

public class MainActivity extends AppCompatActivity {

    private  boolean TESTMODE_UNITY_ADS = true;
    private String unityGameID = "3896203";

    private String Unity_BANNER = "bannerid";
    BannerView bottomBanner;
    RelativeLayout bottomBannerView;

    private String  Unity_INTER ="video";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final UnityAdsListener myAdsListener = new UnityAdsListener();
        UnityAds.initialize(this, unityGameID, myAdsListener, TESTMODE_UNITY_ADS);

        bottomBanner = new BannerView(MainActivity.this, Unity_BANNER, new UnityBannerSize(320, 50));
        bottomBannerView = findViewById(R.id.bottomBanner);
        bottomBannerView.addView(bottomBanner);
        bottomBanner.load();

        Button muncul_inter = findViewById(R.id.btn_inter);
        muncul_inter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (UnityAds.isReady (Unity_INTER)) {
                    UnityAds.show (MainActivity.this,Unity_INTER);
                }
            }
        });
    }

    private static class UnityAdsListener implements IUnityAdsListener {
        @Override
        public void onUnityAdsReady(String placementId) {
        }
        @Override
        public void onUnityAdsStart(String placementId) {
        }
        @Override
        public void onUnityAdsFinish(String placementId, UnityAds.FinishState finishState) {
        }
        @Override
        public void onUnityAdsError(UnityAds.UnityAdsError error, String message) {
        }
    }
    
}

Pada tahap ini, anda sudah selesai memasang iklan banner dan intertitial unity. Silahkan lakukan uji coba dengan proses Run / Build kedalam emulator atau smartphone anda. Jika berhasil maka tampilannya seperti  berikut: