Tutorial Pemanggilan Dan Penempatan Iklan Admob Yang Baik Dan Benar

 





Set Buil.gradel seperti script dibawah ini
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.2.1'
}
}

allprojects {
repositories {
google()
//noinspection JcenterRepositoryObsolete
jcenter()
maven {
url "https://jitpack.io"
}
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}




Set Buil.gradel seperti script dibawah ini
plugins {
id 'com.android.application'
}

android {
compileSdk 32

defaultConfig {
applicationId "com.intek.a101.admobtutorial"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
multiDexEnabled true
}

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

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation "androidx.cardview:cardview:1.0.0"

implementation 'com.google.android.gms:play-services-ads:21.5.0'
implementation "androidx.multidex:multidex:2.0.1"
implementation 'com.intuit.sdp:sdp-android:1.0.6'
implementation 'com.intuit.ssp:ssp-android:1.0.6'

}





Tambahkan Pilihan Warna Pada Value Color
<resources>
    <color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="blue_700">#0071ca</color>
<color name="gray_500">#9e9e9e</color>
<color name="gray_900">#1d1d1d</color>
<color name="gray_800">#3e3e3e</color>
<color name="blue_500">#0192ea</color>
<color name="blue_800">#0061b8</color>
<color name="blue_900">#004399</color>
<color name="blue_gray_800">#37474f</color>
<color name="blue_gray_900">#263238</color>
<color name="grey">#616161</color>
<color name="subtext">#8599A7</color>
<color name="start_color">@color/blue_500</color>
<color name="end_color">@color/blue_700</color>
</resources>





Tambahkan Pilihan Theme Pada Value Theme
<style name="Theme.AdmobTutorial" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
    <!-- Primary brand color. -->
<item name="colorPrimary">@color/blue_500</item>
<item name="colorPrimaryVariant">@color/blue_700</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/blue_500</item>
<item name="colorSecondaryVariant">@color/blue_900</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>





Tambahkan String Unit id admob dan unit iklan admob Pada Value String
<resources>
    <string name="app_name">Admob Tutorial</string>

<!-- app ad section -->
<string name="admob_app_id" >ca-app-pub-3940256099942544~3347511713</string>
<string name="admob_banner_id">ca-app-pub-3940256099942544/6300978111</string>
<string name="admob_interstitial">ca-app-pub-3940256099942544/1033173712</string>
<string name="admob_tutorial">Pemanggilan dan penempatan iklan yang baik dan benar</string>
<string name="tampilkan_inter">Tampilkan Inter</string>
<!-- end of the ad section -->
</resources>



Tambahkan class "MainActivity" Seperti Script Dibawah
package com.intek.a101.admobtutorial;

import androidx.appcompat.app.ActionBar;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.LinearLayout;

public class MainActivity extends BaseActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
assert actionBar != null;
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);

LinearLayout container = findViewById(R.id.banner_container);
AdController.loadBannerAd(MainActivity.this, container);


}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}




Tambahkan layout "activity_main" Seperti Script Dibawah
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:orientation="vertical">

<FrameLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
android:background="#FFFFFF"
tools:context=".activity.main.AutoReplyActivity">

<androidx.fragment.app.FragmentContainerView
android:id="@+id/main_frame_layout"
android:name="com.intek.a101.admobtutorial.MainFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent" />
</FrameLayout>

<LinearLayout
android:id="@+id/banner_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:gravity="center"
android:orientation="vertical" />
</LinearLayout>



Tambahkan class "MainFragment" Seperti Script Dibawah
package com.intek.a101.admobtutorial;

import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatButton;
import androidx.fragment.app.Fragment;


public class MainFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, container, false);
Activity mActivity = getActivity();

AppCompatButton button = view.findViewById(R.id.button);
LinearLayout adaptiveAdContainer = view.findViewById(R.id.banner_adaptive_container);
AdController.adptiveBannerAd(mActivity, adaptiveAdContainer);
AdController.loadInterAd(mActivity);
button.setOnClickListener(v -> AdController.showInterAd(mActivity));
return view;
}

}



Tambahkan layout "fragment_main" Seperti Script Dibawah
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/white">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<androidx.cardview.widget.CardView
android:id="@+id/title_con"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/_10sdp"
android:elevation="@dimen/_8sdp"
app:cardCornerRadius="@dimen/_6sdp"
app:cardElevation="@dimen/_4sdp">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<LinearLayout
android:id="@+id/bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/_10sdp"
android:gravity="center"
android:orientation="vertical">

<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp"
android:fontFamily="@font/roboto_b"
android:gravity="center"
android:maxLines="2"
android:shadowColor="#ff000000"
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="1"
android:text="@string/app_name"
android:textAlignment="center"
android:textColor="@color/blue_700"
android:textSize="25sp" />

<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/nunito_bold"
android:gravity="center"
android:maxLines="1"
android:text="@string/admob_tutorial"
android:textAlignment="center"
android:textColor="#000"
android:textSize="14sp" />

<include layout="@layout/lay_adptive_banner_ad" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>

</androidx.cardview.widget.CardView>

<RelativeLayout
android:id="@+id/pay_lyt"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/title_con"
android:layout_marginTop="@dimen/_50sdp"
android:layout_marginBottom="@dimen/_50sdp">

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/button"
android:layout_width="@dimen/_200sdp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_centerInParent="true"
android:background="@drawable/btn_bg"
android:gravity="center"
android:text="@string/tampilkan_inter"
android:textAllCaps="false"
android:textColor="@color/white"
android:textStyle="bold" />

</RelativeLayout>

</RelativeLayout>
</ScrollView>



Tambahkan class "BaseActivity" Seperti Script Dibawah
package com.intek.a101.admobtutorial;

import android.content.Context;
import android.os.Build;

import androidx.appcompat.app.AppCompatActivity;

public class BaseActivity extends AppCompatActivity {

@Override
protected void attachBaseContext(Context newBase) {
PreferencesManager prefs = PreferencesManager.getPreferencesInstance(newBase);
ContextWrapper contextWrapper = ContextWrapper.wrap(newBase, prefs.getSelectedLocale());
super.attachBaseContext(contextWrapper);

if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N_MR1)
applyOverrideConfiguration(contextWrapper.getResources().getConfiguration());
}
}



Tambahkan class "MyApplication"
package com.intek.a101.admobtutorial;

import android.app.Application;
import android.content.Context;

import androidx.appcompat.app.AppCompatDelegate;
import androidx.multidex.MultiDex;

public class MyApplication extends Application {
private static MyApplication mInstance;

@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}

@Override
public void onCreate() {
super.onCreate();
mInstance = this;
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
AdController.initAd(this);
}

public static Context getContext() {
return mInstance;
}
}



Tambahkan class "ContextWrapper"
package com.intek.a101.admobtutorial;

import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.os.LocaleList;

import java.util.Locale;

public class ContextWrapper extends android.content.ContextWrapper {

public ContextWrapper(Context base) {
super(base);
}

public static ContextWrapper wrap(Context context, Locale locale) {
Resources res = context.getResources();
Configuration configuration = res.getConfiguration();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
configuration.setLocale(locale);

LocaleList localeList = new LocaleList(locale);
LocaleList.setDefault(localeList);
configuration.setLocales(localeList);

context = context.createConfigurationContext(configuration);
} else {
configuration.locale = locale;
}
res.updateConfiguration(configuration, res.getDisplayMetrics());
return new ContextWrapper(context);
}
}



Tambahkan class "PreferencesManager"
package com.intek.a101.admobtutorial;

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;

import java.util.Locale;

public class PreferencesManager {
private static PreferencesManager _instance;
private final Context thisAppContext;
private final SharedPreferences _sharedPrefs;
private String KEY_SELECTED_APP_LANGUAGE;

private PreferencesManager(Context context) {
thisAppContext = context;
_sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
}

public static PreferencesManager getPreferencesInstance(Context context) {
if (_instance == null) {
_instance = new PreferencesManager(context.getApplicationContext());
}
return _instance;
}

public Locale getSelectedLocale() {
String thisLangStr = getSelectedLanguageStr(null);
if (thisLangStr == null || thisLangStr.isEmpty()) {
return Locale.getDefault();
}
String[] languageSplit = thisLangStr.split("-");
return (languageSplit.length == 2)
? new Locale(languageSplit[0], languageSplit[1])
: new Locale(languageSplit[0]);
}

public String getSelectedLanguageStr(String defaultLangStr) {
return _sharedPrefs.getString(KEY_SELECTED_APP_LANGUAGE, defaultLangStr);
}
}



Tambahkan class "AdController"
package com.intek.a101.admobtutorial;

import android.app.Activity;
import android.content.Context;
import android.util.DisplayMetrics;
import android.view.Display;
import android.widget.LinearLayout;

import androidx.annotation.NonNull;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.FullScreenContentCallback;
import com.google.android.gms.ads.LoadAdError;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.RequestConfiguration;
import com.google.android.gms.ads.interstitial.InterstitialAd;
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback;

public class AdController {
public static void initAd(Context context) {
MobileAds.initialize(context, initializationStatus -> {
});

RequestConfiguration requestConfiguration = MobileAds.getRequestConfiguration()
.toBuilder()
.setMaxAdContentRating(RequestConfiguration.MAX_AD_CONTENT_RATING_MA)
.build();
MobileAds.setRequestConfiguration(requestConfiguration);
}

static AdView gadView;

public static void loadBannerAd(Context context, LinearLayout adContainer) {
gadView = new AdView(context);
gadView.setAdUnitId(context.getString(R.string.admob_banner_id));
adContainer.addView(gadView);
loadBanner(context, adContainer);
}

static void loadBanner(Context context, LinearLayout adContainer) {
AdRequest adRequest =
new AdRequest.Builder().build();
AdSize adSize = getAdSize((Activity) context, adContainer);
gadView.setAdSize(adSize);
gadView.loadAd(adRequest);
}

static AdSize getAdSize(Activity context, LinearLayout adContainer) {
Display display = context.getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
float adWidthPixels = adContainer.getWidth();
if (adWidthPixels == 0) {
adWidthPixels = outMetrics.widthPixels;
}
float density = outMetrics.density;
int adWidth = (int) (adWidthPixels / density);
return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(context, adWidth);
}

static InterstitialAd mInterstitialAd;

public static void loadInterAd(Context context) {
AdRequest adRequest = new AdRequest.Builder().build();
InterstitialAd.load(context, context.getString(R.string.admob_interstitial), adRequest, new InterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
mInterstitialAd = interstitialAd;
}

@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
mInterstitialAd = null;
}
});
}

public static void showInterAd(final Context context) {
if (mInterstitialAd != null) {
mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() {
@Override
public void onAdDismissedFullScreenContent() {
loadInterAd(context);
}

@Override
public void onAdFailedToShowFullScreenContent(@NonNull com.google.android.gms.ads.AdError adError) {
}

@Override
public void onAdShowedFullScreenContent() {
mInterstitialAd = null;
}
});
mInterstitialAd.show((Activity) context);
}
}

public static void adptiveBannerAd(Context context, LinearLayout adContainer) {
AdView adView = new AdView(context);
AdRequest adRequest = new AdRequest.Builder().build();
adView.setAdSize(AdSize.MEDIUM_RECTANGLE);
adView.setAdUnitId(context.getString(R.string.admob_banner_id));
adView.loadAd(adRequest);
adContainer.addView(adView);
}

}



Tambahkan layout "lay_adptive_banner_ad"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/banner_adaptive_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_10sdp"
android:layout_marginBottom="@dimen/_10sdp"
android:orientation="vertical" />



Set AndroidManifest Seperti Script Dibawah
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.intek.a101.admobtutorial">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove" />

<application
android:name=".MyApplication"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.AdmobTutorial"
tools:targetApi="31">


<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="@string/admob_app_id" />

<activity
android:name=".MainActivity"
android:exported="true"
android:screenOrientation="nosensor"
android:theme="@style/Theme.WaReply" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>


Kalau Semua sudah ok maka tampilan nya akan seperti gambar dibawah ini:




Semoga Bermanfaat




Komentar