diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4da2fe7..b4a40c8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -16,7 +16,7 @@ android { providers.environmentVariable("APPID").getOrElse("de.szalkowski.activitylauncher") minSdk = 16 targetSdk = 36 - versionCode = 7501 + versionCode = 7502 versionName = "2.2.5" multiDexEnabled = true @@ -41,9 +41,9 @@ android { create("ads") { dimension = "ads" val admobAppId = - providers.environmentVariable("ADMOB_APP_ID").getOrElse("ca-app-pub-3940256099942544~3347511713") - val publisherId = providers.environmentVariable("PUBLISHER_ID").getOrElse("") - val appId = providers.environmentVariable("APP_ID").getOrElse("") + providers.environmentVariable("ADMOB_APP_ID").get() + val publisherId = providers.environmentVariable("PUBLISHER_ID").get() + val appId = providers.environmentVariable("APP_ID").get() manifestPlaceholders["ADMOB_APP_ID"] = admobAppId resValue("string", "publisher_id", publisherId) resValue("string", "app_id", appId) @@ -109,7 +109,7 @@ if (isAdsBuild) { // Configure AppLovin Quality Service if applied if (isAdsBuild) { extensions.findByName("applovin")?.let { extension -> - val adReviewKey = providers.environmentVariable("AD_REVIEW_KEY").getOrElse("") + val adReviewKey = providers.environmentVariable("AD_REVIEW_KEY").get() val method = extension.javaClass.methods.find { it.name == "setApiKey" } method?.invoke(extension, adReviewKey) } diff --git a/app/src/ads/java/de/szalkowski/activitylauncher/services/PlaywireServiceImpl.kt b/app/src/ads/java/de/szalkowski/activitylauncher/services/PlaywireServiceImpl.kt index cd5f0e6..2e0be30 100644 --- a/app/src/ads/java/de/szalkowski/activitylauncher/services/PlaywireServiceImpl.kt +++ b/app/src/ads/java/de/szalkowski/activitylauncher/services/PlaywireServiceImpl.kt @@ -1,6 +1,7 @@ package de.szalkowski.activitylauncher.services import android.app.Activity +import android.content.Context import android.view.View import android.view.ViewGroup import com.intergi.playwiresdk.PWNotifier @@ -8,18 +9,19 @@ import com.intergi.playwiresdk.PlaywireSDK import com.intergi.playwiresdk.ads.view.PWViewAd import com.intergi.playwiresdk.ads.view.banner.PWBannerView import dagger.hilt.android.qualifiers.ApplicationContext +import de.szalkowski.activitylauncher.BuildConfig import de.szalkowski.activitylauncher.R import javax.inject.Inject import javax.inject.Singleton @Singleton class PlaywireServiceImpl @Inject constructor( - @ApplicationContext private val context: android.content.Context, + @ApplicationContext private val context: Context, ) : AdService { - private var isInitialized = false + private var banner: PWBannerView? = null - override fun initialize(activity: Activity, container: ViewGroup) { + override fun initialize(activity: Activity) { if (isInitialized) return val publisherId = context.getString(R.string.publisher_id) @@ -29,16 +31,20 @@ class PlaywireServiceImpl @Inject constructor( return } - PWNotifier.startConsoleLogger() + if (BuildConfig.DEBUG) { + PWNotifier.startConsoleLogger() + } + PlaywireSDK.start(publisherId, appId, activity) { success, _ -> if (success) { isInitialized = true - setupBanner(activity, container) } } } - fun setupBanner(activity: Activity, container: ViewGroup) { + override fun loadBanner(context: Context, container: ViewGroup) { + banner?.destroy() + val listener = object : PWViewAd.Listener { override fun onViewAdLoaded(ad: PWViewAd) { container.visibility = View.VISIBLE @@ -54,9 +60,14 @@ class PlaywireServiceImpl @Inject constructor( override fun onViewAdImpression(ad: PWViewAd) {} } - val banner = PWBannerView(activity, "banner-320x50", listener) + banner = PWBannerView(context, "banner-320x50", listener) container.removeAllViews() container.addView(banner) - banner.load() + banner?.load() + } + + override fun destroyBanner() { + banner?.destroy() + banner = null } } diff --git a/app/src/main/java/de/szalkowski/activitylauncher/MainActivity.kt b/app/src/main/java/de/szalkowski/activitylauncher/MainActivity.kt index c01e982..912dfcb 100644 --- a/app/src/main/java/de/szalkowski/activitylauncher/MainActivity.kt +++ b/app/src/main/java/de/szalkowski/activitylauncher/MainActivity.kt @@ -74,7 +74,8 @@ class MainActivity : AppCompatActivity(), ActionBarSearch { val toolbar = findViewById(R.id.toolbar) setSupportActionBar(toolbar) - adService.initialize(this, binding.adContainer) + adService.initialize(this) + adService.loadBanner(this, binding.adContainer) settingsService.applyLocaleConfiguration(baseContext) if (!settingsService.disclaimerAccepted) { @@ -193,6 +194,11 @@ class MainActivity : AppCompatActivity(), ActionBarSearch { } } + override fun onDestroy() { + adService.destroyBanner() + super.onDestroy() + } + private fun navigateToAll(navController: NavController) { if (packageListService.isLoaded) { navController.navigate(R.id.PackageListFragment) diff --git a/app/src/main/java/de/szalkowski/activitylauncher/services/AdService.kt b/app/src/main/java/de/szalkowski/activitylauncher/services/AdService.kt index 1c97ec7..7824b3d 100644 --- a/app/src/main/java/de/szalkowski/activitylauncher/services/AdService.kt +++ b/app/src/main/java/de/szalkowski/activitylauncher/services/AdService.kt @@ -1,11 +1,11 @@ package de.szalkowski.activitylauncher.services import android.app.Activity +import android.content.Context import android.view.ViewGroup interface AdService { - fun initialize( - activity: Activity, - container: ViewGroup, - ) + fun initialize(activity: Activity) + fun loadBanner(context: Context, container: ViewGroup) + fun destroyBanner() } diff --git a/app/src/noads/java/de/szalkowski/activitylauncher/services/AdServiceImpl.kt b/app/src/noads/java/de/szalkowski/activitylauncher/services/AdServiceImpl.kt index c76c0bb..2561e8f 100644 --- a/app/src/noads/java/de/szalkowski/activitylauncher/services/AdServiceImpl.kt +++ b/app/src/noads/java/de/szalkowski/activitylauncher/services/AdServiceImpl.kt @@ -1,14 +1,14 @@ package de.szalkowski.activitylauncher.services import android.app.Activity +import android.content.Context import android.view.ViewGroup -import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton @Singleton -class AdServiceImpl @Inject constructor( - @ApplicationContext private val context: android.content.Context, -) : AdService { - override fun initialize(activity: Activity, container: ViewGroup) {} +class AdServiceImpl @Inject constructor() : AdService { + override fun initialize(activity: Activity) {} + override fun loadBanner(context: Context, container: ViewGroup) {} + override fun destroyBanner() {} }