5 releases

0.2.3 Sep 12, 2022
0.2.2 Aug 30, 2022
0.2.1 Aug 25, 2022
0.2.0 Aug 16, 2022
0.1.9 Aug 10, 2022

#1 in #crossbow

MIT/Apache

165KB
2.5K SLoC

Rust 1.5K SLoC // 0.0% comments Kotlin 861 SLoC // 0.3% comments

Crossbow Admob Plugin

Crate Info Documentation MIT/Apache 2.0 GitHub Stars

About

This project is a Crossbow Plugin that allows showing AdMob ads from Rust. Without worrying about the building, just download and use.

Supported features

Ad Format Available
Banner ❌ (probably doesn't work with NativeActivity)
Interstitial
Rewarded
Rewarded Interstitial
Native

✅ = Works and tested — 🆗 = Works but may contain bugs — 🛠 = Under development — 📝 = Planned - ❌ = Not working - ❗ = Not planned to be implemented

Installation

Just add Rust dependencies like this:

[dependencies]
crossbow = "0.2.3"
[target.'cfg(target_os = "android")'.dependencies]
admob-android = "0.2.3"

And finally, add this to your Crossbow Android configuration:

[package.metadata.android]
plugins_remote = ["com.crossbow.admob:admob:0.2.3"]

That's it, now you can start using AdMob ads!

If you want to publish or share your application to show real ads - configure custom APPLICATION_ID through Cargo.toml file:

[[package.metadata.android.manifest.application.meta_data]]
name = "com.google.android.gms.ads.APPLICATION_ID"
value = "<YOUR ID HERE>"
# By default: ca-app-pub-3940256099942544~3347511713

Usage

First step is plugin initialization. In your rust project, you will need to initialize Crossbow instance and then get Android plugin:

#![cfg(target_os = "android")]

use crossbow::android::*;
let crossbow = CrossbowInstance::new();
let admob: admob_android::AdMobPlugin = crossbow.get_plugin()?;
// Initialize AdMob Service
admob.initialize(true, "G", false, true).unwrap();

To show Interstitial Ad, use following code (remember, currently there's no async API for this plugin - so load and show functions should be called as soon as Sinals received or is_initialized()/is_interstitial_loaded() checked):

admob.load_interstitial("ca-app-pub-3940256099942544/1033173712").unwrap();
admob.show_interstitial().unwrap();

The result will be like this:

AdMob Ad Result Example

To read signals:

if let Ok(signal) = admob.get_receiver().recv().await {
    println!("Signal: {:?}", signal);
}

Complete documentation you can find here.

Thanks and inspiration

This Plugin was initially inspired by godot-admob-android.

Dependencies

~325–800KB
~18K SLoC