Step 1: Replace SDK

  • Remove debug and release versions in sdk 3.0

    debugImplementation("com.ikame.android-sdk:ikm-android-sdk-debug:x.xx.xx")

    releaseImplementation("com.ikame.android-sdk:pub-sdk-release:x.xx.xx")

  • Add debug and release version in sdk 4.0

  def debugSdk = "com.ikameglobal:android-adapter-default-debug:1.4.31-rc"
def releaseSdk = "com.ikameglobal:android-pub-sdk-release:x.xx.xx"

dependencies {

    // If your app uses BaseIkFirebaseMessagingService
    implementation("com.google.firebase:firebase-messaging-ktx:24.1.0")

    implementation("com.ikameglobal:android-sdk-ads:4.2.61-rc")

    debugImplementation("$debugSdk")
    releaseImplementation("$releaseLink")
}
  

Step 2: Replace IKBaseApplication with Application in application class

  • Remove override fun enableRewardAd()
  • Remove override fun configIAPData()
  class MyApp : Application() {

    override fun onCreate() {
        super.onCreate()
        // Your code
    }
}
  

Step 3: Change splashAd display

  • Remove IKSdkController.loadSplashScreenAd and IKSdkController.showSplashScreenAd

  • Replace with:

  class SplashActivity : AppCompatActivity() {

    private val splashAd by lazy(LazyThreadSafetyMode.NONE) {
        IKSplashAd()
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash)

        lifecycleScope.launch {
            splashAd.loadAndShowSplashScreenAd(
                activity = this@SplashActivity,
                listener = object : IKShowAdListener {
                    override fun onAdsDismiss() {
                        // Do something
                    }

                    override fun onAdsShowFail(error: IKAdError) {
                        // Do something
                    }

                    override fun onAdsShowTimeout() {
                        // Do something
                    }
                }
            )
        }
    }
}
  

Step 4: Replace some functions if used

  • IkmWidgetAdView.isAdLoaded –> IkmWidgetAdView.getIsAdLoaded()
  • IkmWidgetAdView.enableShimmer –> IkmWidgetAdView.setEnableShimmer(Boolean)

Step 5: Remove preload native, banner

  • IKSdkController.preloadNativeAd
  • IKSdkController.preloadBannerAd
  • IKSdkController.preloadBnBAd
  • IKSdkController.preloadNativeAdFullScreen

Step 6: Change if your app has IAP

Deprecated com.ikame.android.sdk.billing.IKBillingControlle

ReplaceWith com.ikame.android.sdk.billing.IKBilling

Integrate the IK Billing

Step 7: Update Firebase Remote Config

Change: getRemoteConfigData() transitioned from synchronous to asynchronous, using Kotlin’s suspend functions.

Details:

Feature SDK 3.0 SDK 4.0
Function Signature fun getRemoteConfigData(): HashMap<String, IKRemoteConfigValue> suspend fun getRemoteConfigData(): HashMap<String, IKRemoteConfigValue>
Execution Synchronous (Blocking) Asynchronous (Non-Blocking)
  lifecycleScope.launch {
    val keyTest: String? = IKSdkController.getRemoteConfigData()["key_test"]?.getString()
}