SDK Integration

Android: The Chartboost SDK will add approximately 700KB to your final download size.
iOS 9.x+: The Chartboost SDK will add less than 1.5MB to your final download size.
iOS 8.x & below: The Chartboost SDK will add less than 4MB to your final universal build download size.
The actual SDK package download file may be significantly larger because it includes sample code and the full Chartboost framework. Many of these files can be removed after compiling.
▲ Back to top

You should not use the same app ID and signature for multiple apps!
If anyone decides to block your app, they would also block any other app sharing the same ID. For publishers, this could impact potential earnings.
Your historical analytics would be inaccurate. Data would be combined between apps sharing the same ID.
Sharing the same app ID across different platforms will most likely break things and make you sad.
The best practice would be to create a brand new app in your Chartboost dashboard.
▲ Back to top

Your app’s iOS bundle ID is in its iTunes Connect record under App Information > General Information.
Google Play bundle IDs are in your app’s Google Play Store URL.
Amazon Standard Identification Numbers (ASINs) are available publicly on your app’s Amazon Appstore page in the Product Details section.
▲ Back to top

  • You must pause the app audio when a video beings playing and unpause once the video is done.
  • Use the delegate methods willDisplayVideo and didDismissRewardedVideo.
  • Pause the game at willDisplayVideo and unpause it at didDismissRewardedVideo.
  • Learn more about delegate methods.
▲ Back to top

NSLog(@"\n \n Chartboost Integration Warning: your account has been set to advertiser only. %s has been disabled.
	Please contact support if you expect this call to function. \n \n \n", function);
Here’s why you got this error:
  • You are attempting to call for an ad, but either you have not started a publishing campaign yet.
  • If you’ve already created your publishing campaign, it might not have gone live yet. Publishing campaigns may take up to an hour to go live after being created.
▲ Back to top

It’s possible that your browser isn’t updating your cache or cookies. Try removing your browser cache and cookies. For instructions, click on the browser you’re using:
Chrome
Firefox
Safari
Still not working? Let us know!
▲ Back to top

Linker errors are likely to appear when you’ve forgotten to link one or more frameworks to your project. Please review the frameworks required by the latest SDK in the iOS integration documentation and make sure your project is linking to all of them. If you still see linker errors, it may be that you are missing the -ObjC linker flag in your XCode project’s build settings and need to add it back to the Other Linker Flags field.
▲ Back to top

Interstitials can appear large or “zoomed in” on an iPad 2 Simulator. This is because the Simulator is not passing back a real device model to Chartboost. If you use a different Simulator or an actual device, you will not experience this behavior.
▲ Back to top

Yes. The Chartboost SDK and all links are compatible with App Transport Security. If you’d like to run cross-promotion campaigns that link to your company website, or otherwise have ads that direct to locations outside the app store, make sure you use https, have a valid SSL certificate, and follow other methods to ensure your custom URL links remain ATS compliant. Learn more ▶
▲ Back to top

To avoid this warning, you will need to make sure that when using the Chartboost method [Chartboost startWithAppId:@"..." appSignature:@"..." delegate:self] the class of the object you’re passing in as the delegate conforms to the ChartboostDelegate protocol. Check your AppDelegate.h file and make sure the interface contains the proper delegate references: @interface AppDelegate : UIResponder <UIApplicationDelegate, ChartboostDelegate> You can refer to the “Conforming to Protocols” section of Apple’s documentation for a more detailed explanation.
▲ Back to top

There may be a problem with your Android app’s manifest settings. Any activities that show Chartboost ads must have the value android:hardwareAccelerated="true" in their activity entry on the Android Manifest, or video might not display properly.
If you’re developing on Android outside of Unity, check your Android Manifest files to ensure that the following is included. If not, add this and retest:
<activity android:name="com.chartboost.sdk.CBImpressionActivity"
	android:excludeFromRecents="true"
	android:hardwareAccelerated="true"
	android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
	android:configChanges="keyboardHidden|orientation|screenSize" />
Instead of enabling hardware acceleration for individual activities that show ads, you can apply hardware acceleration across your entire app by adding android:hardwareAccelerated='true' inside your top-level application entry in AndroidManifest.xml
If you’re developing on Android through Unity, and you are NOT using the official Chartboost plugin, make this call immediately after calling the startWithAppId method:
Chartboost.setFramework(CBFramework.CBFrameworkUnity, unityVersion);
unityVersion is the value returned by Application.unityVersion If you are still having problems, feel free to contact us. Please also tell us…
  • if the problem persists after turning on the device’s Force GPU Rendering setting under Settings > Developer Options > Force GPU Rendering.
  • the Android OS version and model of the device being affected.
  • the version of the third-party framework or engine you’re using (e.g. Unity, Adobe AIR), if applicable.
  • which version of the Chartboost SDK you’re using.
  • which mediation SDK you’re using, if applicable.
Please also include an .apk build of your game so we can test.
▲ Back to top

In some cases, it may be preferable for native Android or Unity Android developers to use an activity instead of a view to display Chartboost ads. While activities may work better in games built with certain game engines, we encourage you to experiment with both, as there can be both upsides and downsides to either method.
▲ Back to top

If you wish, you can also bypass the requirement to include the Google Play Services library in your Unity build. If you remove the following from the manifest:

<meta-data android:name="com.google.android.gms.version"
 android:value="@integer/google_play_services_version"/>
then you will no longer be prompted to run the setup dialog, and your app should be able to proceed as usual.
▲ Back to top

Exception in thread "main" java.lang.Error: Unable to find named traits: com.chartboost.plugin.air::Chartboost
If you get an error similar to this while building your application, it usually indicates that the AIR native extension was not packaged properly. Make sure you’ve included this plugin’s extension ID in your application descriptor XML file. Also verify that when you export a build, the Chartboost ANE is being packaged with your application.
▲ Back to top

This is a known issue with the Adobe AIR 6.4.0 SDK for iOS 7.0 and below. We’re working hard to fix it. Stay tuned!
▲ Back to top

The Chartboost initialization call must be made during hard and soft bootups within the first few seconds of your app launching, regardless of any other actions or user interaction within your app.
Please check the SDK integration guide for more specific requirements.
▲ Back to top

Native Chartboost SDKs


Wrappers for Native Chartboost SDKs


You might also like…
▲ Back to top

You can find which version of the SDK you’re running by calling the following methods:
NSLog(@”Using Chartboost version: %@”, [Chartboost getSDKVersion]);
public static String getSDKVersion() { return CBConstants.SDK_VERSION; }
Alternatively, you can also…
  • Find the version number in the readme within the SDK download file.
  • Check the top of the Chartboost.h header embedded inside the framework (iOS only).
  • Set up Charles Web Proxy to determine the SDK version.

Download Latest SDK

▲ Back to top

You’ll notice three icons on your game’s App Settings page:

Here’s what the icons mean (from left to right):
  • SDK Light: If lit, our SDK has been successfully integrated with your app. The light will turn on (within one hour) once we’ve received an initialization call from your game.
  • Frame Light: If lit, you’ve successfully uploaded a custom frame.
  • Creative Light: If lit, you’ve successfully uploaded artwork that promotes your game.
▲ Back to top

We support native Objective-C, Java, Unity, and Adobe AIR.
▲ Back to top

Yes, you can still integrate the Chartboost SDK and run tests if your app isn’t yet live in the App Store, Google Play Store, or Amazon Appstore for Android. Just add your app to the dashboard and after your game is live, follow the steps on that page to add your market URL or ASIN.
▲ Back to top

If you’ve integrated the Chartboost SDK and finalized your build, you’re ready to submit to the App Store! Before you do this however, here are a few tips and recommendations we have:
  1. Ensure that your Chartboost App ID and Signature are correct. Some developers may have multiple Apps or multiple versions of the same App. If the wrong IDs are used, you will unfortunately need to resubmit to fix this.
  1. Use Charles (or any other web debug proxy) to ensure the Chartboost SDK is being initialized on each bootup. We expect the api/install call to be made each time a user launches or resumes the App.
  1. Perform a final QA to ensure that the user experience is as you’d like. For example, are ad units showing up in the appropriate location? Test Mode is a great tool to use for this kind of testing.
  1. If submitting to the Apple App Store, you may be asked some questions regarding your use of IDFA. You can find information regarding the Chartboost SDK complying with Apple’s IDFA policy here.
As of June 1, 2016, Apple requires that all submitted apps must support IPv6.
▲ Back to top

It’s the best way to ensure that we’re accurately tracking analytics and capturing conversions. Because a single network call can fail for any number of reasons, it’s smart to insure against that by initializing Chartboost every time your app becomes active.
▲ Back to top

Please read our Terms & Conditions to learn more.
▲ Back to top

We use the IFA (Identifier for Advertising) for iOS games; Android ID and Google Play Services Advertising ID for Google Play games. Learn more ▶
▲ Back to top

▲ Back to top

Yes, but there a few things you should keep in mind while doing so:
  • The iOS Identifier for Advertising (IDFA) will be different every time the SDK requests the device identifier in TestFlight apps. Some Chartboost features – like device lists for exclusion/inclusion – may not work or behave as expected. More information
  • As a result of the aforementioned, analytics reports that include device data from TestFlight builds may not be reliable
  • Note that this only applies to testing, not production builds downloaded from the App Store
▲ Back to top

Because Apple’s Game Center view can override Chartboost activity, you can use the rootView to show interstitials in a separate view. (SDK version 3.2+.) For example: Let’s say we have a two-view loading sequence with a loading view and a menu view of type MenuView. We can set the Chartboost rootView to an instance of MenuView. After that, the interstitial will prerender for the MenuView view only, regardless of when showInterstitial was called. No interstitials will appear until the MenuView view is displayed. It’s as simple as [Chartboost sharedChartboost].rootView = gameMenu; where gameMenu is an already initialized instance of MenuView. Be sure to set the rootView to ‘nil’ once you switch away from the view currently set as the rootView. If you miss this step, interstitials will NOT display anywhere else in your game! Setting the rootView to nil is as easy as [Chartboost sharedChartboost].rootView = nil; Notes:
  • The rootView frame should be the same size as the window
  • The rootView should be the first responder in the view hierarchy
▲ Back to top

If you do not want Moat enabled, then simply delete CHAMoatMobileAppKit.framework and don’t link it with your Xcode project. If you’re not using Moat, you don’t need the -ObjC entry in the Other Linker Flags property of your XCode project’s Build Settings section.
▲ Back to top