Firebase - cleveradssolutions/CAS-Track-revenue GitHub Wiki

Integrate the SDK into your app


The integration of Firebase SDK into your application is presented in the official source.

Track CAS revenue

Initialization

Android

More information about initialization of CAS SDK here and Firebase SDK here.

public class GlobalApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        
        //Initialize CAS
        CAS.buildManager().initialize(); 
    }
}
public class MyActivity extends Activity {
    private FirebaseAnalytics mFirebaseAnalytics;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // Obtain the FirebaseAnalytics instance.
        mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
    }
}
iOS

More information about initialization of CAS SDK here and Firebase SDK here.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool
{
    // Initialize CAS
    let manager = CAS.create(managerID: "demo",
                             enableTypes: [.banner, .interstitial, .rewarded],
                             demoAdMode: true) { complete, error in
               print("[CAS Sample] Mediation manager initialization: \(complete) with error: \(String(describing: error))")
           }

    FirebaseApp.configure()
}
Unity3d

More information about initialization of CAS SDK here and Firebase SDK here.

class CleverAdsSolutionsDemoScript : MonoBehaviour
{
    IMediationManager manager;
 
    void Start()
    {
        // Initialize CAS
        manager = builder.Initialize();
  
        // Initialize Firebase SDK 
        Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
            var dependencyStatus = task.Result;
            if (dependencyStatus == Firebase.DependencyStatus.Available) {
                // Create and hold a reference to your FirebaseApp,
                // where app is a Firebase.FirebaseApp property of your application class.
                app = Firebase.FirebaseApp.DefaultInstance;
                // Set a flag here to indicate whether Firebase is ready to use by your app.
            } else {
                UnityEngine.Debug.LogError(System.String.Format(
                     "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
                // Firebase Unity SDK is not safe to use here.
            }
        });
    }
}

Track Impression Level Data

Android

Use our Ad Content Callback for tracking your Impression Level Data.

class MyActivity extends Activity implements AdCallback {
  MediationManager manager; 
  CASBannerView banner;
  FirebaseAnalytics mFirebaseAnalytics;

  void createBanner() {
      banner = new CASBannerView(this, manager);
      banner.setListener(this);
  }

  void showInterstitial() {
      manager.showInterstitial(MyActivity.this, this);
  }

  void showRewarded() {
      manager.showRewarded(MyActivity.this, this);
  }

  @Override
  void onShown(AdStatusHandler ad) {
     // Executed when the ad is begin displayed.
     // AdStatusHandler is information of ad impression.

     Bundle bundle = new Bundle();
     bundle.putString(FirebaseAnalytics.Param.AD_PLATFORM, "CAS")
     bundle.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, manager.getManagerID())
     bundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD");
     bundle.putString(FirebaseAnalytics.Param.AD_SOURCE, ad.getNetwork());
     bundle.putString(FirebaseAnalytics.Param.AD_FORMAT, ad.getAdType().name());

     if (ad.getPriceAccuracy() != PriceAccuracy.UNDISCLOSED) {
         bundle.putDouble(FirebaseAnalytics.Param.VALUE, ad.getCpm() / 1000 );
         bundle.putString("PriceAccuracy",
                 ad.getPriceAccuracy() == PriceAccuracy.BID ? "BID" : "FLOOR");
     } else {
         bundle.putString("PriceAccuracy", "UNDISCLOSED");
     }

     mFirebaseAnalytics.logEvent("ad_cas_impression", bundle);
  }
}
iOS

Use our Ad Content Callback for tracking your Impression Level Data.

class AdExample : UIViewController, CASCallback {
    let manager: CASMediationManager
    @IBOutlet var bannerView: CASBannerView!
    
    func createBanner() {
        bannerView.rootViewController = self
        bannerView.delegate = self
    }
    
    func showInterstitial() {
        manager.presentInterstitial(fromRootViewController: self, callback: self)
    }
    
    func showRewarded() {
        manager.presentRewardedAd(fromRootViewController: self, callback: self)
    }

    func willShown(ad: CASStatusHandler) {
        var params : [String : Any] = [AnalyticsParameterAdFormat : ad.adType.description,
                                          AnalyticsParameterAdSource : ad.network,
                                          AnalyticsParameterCurrency : "USD"
                                          AnalyticsParameterAdPlatform : "CAS"
                                          AnalyticsParameterAdUnitName : manager.managerID ]
        
        
        if (ad.priceAccuracy != CASPriceAccuracy.undisclosed) {
            params[AnalyticsParameterValue] = ad.cpm / 1000 
            
            if (ad.priceAccuracy == CASPriceAccuracy.bid) {
                params["PriceAccuracy"] = "BID"
            } else {
                params["PriceAccuracy"] = "FLOOR"
            }
        } else {
            params["PriceAccuracy"] = "UNDISCLOSED"
        }
        
        Analytics.logEvent("ad_cas_impression", parameters: params)
    }
}
Unity3d

Use our Ad Content Callback for tracking your Impression Level Data.

class CleverAdsSolutionsDemoScript : MonoBehaviour
{
    IMediationManager manager;
    
    void Start()  
    {
        manager.OnInterstitialAdOpening += onAdOpening;
        manager.OnRewardedAdOpening += onAdOpening;
    }

    void showInterstitial()
    {
        manager.ShowAd( AdType.Interstitial );
    }

    void showRewarded()
    {
        manager.ShowAd( AdType.Rewarded );
    } 

    void showBanner()
    {
        manager.ShowAd( AdType.Banner );
    }
     
    void onAdOpening(AdMetaData adMetaData)
    {
        // Executed when the ad is begin displayed.
        // AdStatusHandler is information of ad impression.
        List<Firebase.Analytics.Parameter> firebaseParams = new List<Firebase.Analytics.Parameter>();

        firebaseParams.Add( new Firebase.Analytics.Parameter( 
            Firebase.Analytics.FirebaseAnalytics.ParameterAdPlatform, 
            "CAS" ) );
        firebaseParams.Add( new Firebase.Analytics.Parameter( 
            Firebase.Analytics.FirebaseAnalytics.ParameterAdUnitName, 
            manager.managerID ) );
        firebaseParams.Add( new Firebase.Analytics.Parameter( 
            Firebase.Analytics.FirebaseAnalytics.ParameterAdFormat, 
            adMetaData.type.ToString() ) );
        firebaseParams.Add( new Firebase.Analytics.Parameter( 
            Firebase.Analytics.FirebaseAnalytics.ParameterAdSource, 
            adMetaData.network.ToString() ));
        firebaseParams.Add( new Firebase.Analytics.Parameter( 
            Firebase.Analytics.FirebaseAnalytics.ParameterCurrency, 
            "USD" ));

        if ( adMetaData.priceAccuracy != PriceAccuracy.Undisclosed )
            firebaseParams.Add( new Firebase.Analytics.Parameter( 
                 Firebase.Analytics.FirebaseAnalytics.ParameterValue, 
                 adMetaData.cpm / 1000 ) );

        firebaseParams.Add( new Firebase.Analytics.Parameter( 
            "PriceAccuracy", 
            adMetaData.priceAccuracy.ToString() ) );

        Firebase.Analytics.FirebaseAnalytics.LogEvent( 
            "ad_impression", 
            firebaseParams.ToArray() );
    }
}
⚠️ **GitHub.com Fallback** ⚠️