Daily DAU is fair #️⃣

With Localazy, for OTA updates, you only pay for what you use. The price for this feature is calculated daily based on DAU (Daily Active Users) on the given day.

As an active user, we understand your app’s user device that connects to our servers to:

  • check whether new translations are available or download them
  • send collected stats about languages and phrases that we used to optimize the translation process

Calculating DAU on a daily basis is great as it flexibly reacts to spikes, and you are not overpaying just because one day in the month had higher than your normal traffic.

OTA Pricing Price/Unit
first 1000 DAU $0.0008
next 10k DAU $0.00024
next 100k DAU $0.000072
above $0.0000216

You can always see your current expenses and stats in the Marketplace.

Don’t pay for illegal copies #️⃣

By default, anybody with your app can update translations from Localazy. Honestly, paying for DAU generated from illegal and altered copies of your app is probably not what you want. Limit it by settings allowed packages and certificate fingerprints!

Go to localazy.com, login, open your app, and then go to Settings > Android Security. Limit access to allowed packages/certificates.
Screnshot

And that’s it! No more money spent on illegal copies.

Limit updates and stats sending #️⃣

By default, the Localazy library integrated into your app is trying to check/download updated translations once per day and send collected stats along with the update.

However, you can configure completely different behavior in your Gradle script with no single change to the source code.

Localazy Gradle plugin from version 1.2.0 comes with 10 new configuration options for the library injection process.

Let’s, for example, configure Localazy to update translations only for long-term loyal users. This configuration significantly decreases costs for OTA updates!

// Your app's module Gradle build script.

// ... the rest of the file ...

localazy {

    injection {

        // Check for updated translations once per a week
        updateInterval 604800

        // Check for updated translations once per 24 hours
        // if the previous request failed
        updateIntervalForFailure 86400

        // Delay the first check for updated translations 
        // by 2 hours to filter out users that install and 
        // almost immediately uninstall your app
        updateDelay 7200
   
        // Do not check for updated strings from background
        // services and receivers but only from Activities
       updateForActivityOnly true

        // Do not send stats on their own but bind them 
        // to check for updated translations
        sendStatsRegularly false

    }

}

For long-term loyal users, we have added a shortcut from version 1.3.0. Now, it’s as easy as:

localazy {
    // ...
    injection {
        loyalUsersOnly()
    }
}

Disable OTA updates completely #️⃣

You may want to disable OTA updates completely as it may not be suitable for your particular situation. No problem at all!

Just update the Localazy Gradle plugin configuration as follows:

localazy {
    // ...
    injection {
        enabledForRelease false
        enabledForDebug false
    }
}

Configure it remotely #️⃣

Localazy Android library already knows how to update parameters introduced in this article remotely, and making it available for you through some nice UI is on our roadmap 😉.