Simplify native plugin integration in Unity for

In-App Ads In-App Billing Analytics And Attribution Consent Management (GDPR) Remote Config Google Play Games Services Rate Us PopUp

It’s a game-changer, making implementation easy, saving you valuable time, and cutting down costs!

Why Plankton?

Proven in production since 2021

  • Reduce Costs Effectively
  • Effortless Implementation
  • Prevent Dependency Conflicts
  • Customize Your Features
  • Minimize Debugging Effort
  • Access Comprehensive Sample Code
  • No Need for Native Platform Knowledge
  • Enjoy an All-in-One Solution for Unity

Reviews

Funtory Studio
Funtory Studio
Game Studio & Publisher
Read More
While rapid prototyping is essential for any game developer, it's even more crucial for our studio's mobile game development process. Plankton has been a revelation! Setting it up was a breeze, and the documentation is incredibly detailed. The code examples are clear and easy to follow, allowing our developers to focus on what matters - building amazing games.
Sajad Beigjani
Sajad Beigjani
Technical Lead at Funtory Studio
Read More
Extremely easy to use with lots of plugins just like a magic! - less codes imported to the project! - automatically generated less files in Plugins folder! - very clear simple minimal but complete interfaces! I really satisfied by the package due to saving a lot of time in my life. Plus, the responsive support team is a bonus! Plankton is an essential tool for any mobile game developer looking to boost their efficiency.
Mohammad Roohian
Mohammad Roohian
Unity Developer
Read More
Before Plankton, integrating core features like ads and IAP into prototypes was a major bottleneck. Now, with Plankton, we can quickly add essential functionalities without writing a single line of native code. The comprehensive suite of features offered by Plankton eliminates the need for multiple plugins, further streamlining our workflow. We highly recommend Plankton to anyone looking to streamline their mobile development process!
Madsen Ghiesarie
Madsen Ghiesarie
Product Manager
Read More
Integrating ad platforms, analytics, and billing used to be a complex and time-consuming process. Plankton simplifies everything, allowing me to easily track my revenue streams and optimize my in-app purchases. Now, I can focus on creating engaging content that drives player engagement, knowing that Plankton is handling the back-end seamlessly. The ability to manage user consent through Plankton 's GDPR features gives me peace of mind.
Moein Saadati
Moein Saadati
Unity Developer
Read More
Plankton is a game-changer for mobile development. Integrating features like ads, analytics, and billing used to be a headache, but Plankton makes it seamless. But what truly sets them apart is their customer support. I had a question about a specific integration, and the team on their Discord was incredibly responsive and helpful. They guided me through the issue and even offered personalized advice for my project.
Previous
Next

Integrate Today!

Say goodbye to integration headaches!
Focus on what you do best— Creating amazing games!

  using Plankton;

//Initialize
var provider = Ad.Provider.Admob; // or Ad.Provider.AppLovin
Ad.Initialize(provider, BANNER_UNIT_ID, provider, INTERSTITIAL_UNIT_ID, provider, REWARDED_UNIT_ID);

// Show Banner
Ad.Banner = true;

// Show Interstitial
Ad.ShowInterstitial(new Ad.Place(Ad.Type.Interstitial, "inter_placement"), () => Debug.Log("Ad closed."));

// Show Rewarded
Ad.ShowRewarded(new Ad.Place(Ad.Type.Rewarded, "rewarded_placement"), rewardEarned => Debug.Log($"Ad closed."));

  using Plankton;

// Initialize
Billing.Initialize(succeed => Debug.Log($"GooglePlay Billing initialization result:{succeed}"));

// Get List of Purchases
Billing.GetPurchases((succeed, purchaseList) => { /* Process purchase list */ });

// Get Product Details
var productIds = new string[] {"product_sku_1", "product_sku_2"};
Billing.GetSkuDetails((succeed, productDetailList) => { /* Process product details */ }, productIds);

// Make Purchase
Billing.Purchase("product_sku", "", "", (status, token) =>
{
    Debug.Log($"Purchase result:{status}, purchase token:{token}");
    if (status == Billing.Status.PurchaseStatus.Purchased)
    {
        // Give product to player and consume/acknowledge the product
        Billing.Consume(token, (succeed, token) => {} ); // or call Billing.Acknowledge()
    }
});

 using Plankton;
using static Plankton.GeneralAnalytics;

// Initialize
GeneralAnalytics.Initialize();

// Set User Property
var providers = Provider.Firebase | Provider.Yandex;
GeneralAnalytics.SetUserProperty(providers, "property_key", "property_value");

// Send Event
var eventProviders = Provider.Firebase | Provider.Appsflyer | Provider.Yandex;
var parameters = new Dictionary<string, string>() {
    { "param_1", "value_1"},
    { "param_2", "value_2"},
    { "param_3", "value_3"},
};
GeneralAnalytics.LogEvent(eventProviders, "event_name", parameters);

 using Plankton;

// Update user consent info
GoogleUmp.RequestConsentInfoUpdate((succeed, error) => Debug.Log($"Is successful:{succeed}, Error:{error}"));

// Show consent form if required
GoogleUmp.LoadAndShowConsentFormIfRequired((succeed, error) => Debug.Log($"Is successful:{succeed}, Error:{error}"));

// Check if ads can be shown
bool canRequestAds = GoogleUmp.CanRequestAds();

 using Plankton;

// *** Firebase Remote Config ***
// Fetch whole remote config
GeneralAnalytics.RemoteConfig.Fetch(json => Debug.Log($"Fetch Successfull! configs:{json}"), () => Debug.Log("Fetch Failed!"));

// Get a specific value for a given key
var configValue = GeneralAnalytics.RemoteConfig.Get("config_key", "default_value");


// *** GameAnalytics Remote Config ***
// No need to manually fetch
var isReady = GameAnalytics.IsRemoteConfigsReady();
if (isReady){
    // Get a specific value for a given key
    var value = GameAnalytics.GetRemoteConfigsValueAsString("config_key", "default_value");
}

 using Plankton;

// Sign-In to google account
PlayServices.SignIn(succeed => Debug.Log($"Play Services signin result:{succeed}"));

// Save player data
PlayServices.Save("Data to be saved", succeed => Debug.Log($"Save result:{succeed}"));

// Load player data
PlayServices.Load(data => Debug.Log($"Load result:{data}"));

 using Plankton;

// Show Google's rate us pop-up
Utils.ShowRateUs(succeed => Debug.Log($"Rate us popup display result:{succeed}"));

Features