FAQs

最后更新于

June 7, 2023

Chartboost SDK 集成

Chartboost SDK 有多大?

  • Android:Chartboost SDK 将使您的最终下载大小增加大约 700KB。
  • ‍iOS 9.x+:Chartboost SDK 将为您的最终下载大小增加不到 1.5MB。
  • ‍iOS 8.x 及以下版本:Chartboost SDK 将为您的最终通用构建下载大小增加不到 4MB。

‍实际的 SDK 包下载文件可能要大得多,因为它包含示例代码和完整的 Chartboost 框架。 编译后可以删除其中许多文件。

‍我可以为多个应用使用一个应用ID和一个应用签名吗?

您不应该为多个应用程序使用相同的应用程序 ID 和签名!

  • 如果有人决定屏蔽您的应用,他们也会屏蔽共享相同 ID 的任何其他应用。 对于发布商而言,这可能会影响潜在收入。
  • ‍您的历史分析将不准确。 数据将在共享相同 ID 的应用程序之间合并。
  • 在不同平台上共享相同的应用程序 ID 很可能会破坏事情并让您感到难过。

‍最好的做法是在您的 Chartboost 平台上创建一个全新的应用程序

我的应用程序的包 ID 在哪里?

iTunes Connect

  • 您的应用程序的 iOS 捆绑包 ID 位于应用程序信息 > 一般信息(App Information > General Information)下的 iTunes Connect 记录中。

Google Play

亚马逊应用商店

  • 亚马逊标准识别号 (ASIN) 可在您应用程序的亚马逊应用商店页面的“产品详情”部分中公开获得。

为什么应用音频在播放广告时不会暂停?

  • 您必须在视频开始播放时暂停应用程序音频,并在视频播放完毕后取消暂停。
  • 使用委托方法 willDisplayVideo 和 didDismissRewardedVideo。
  • 在 willDisplayVideo 处暂停游戏并在 didDismissRewardedVideo 处取消暂停。
  • 详细了解设备标识符

‍为什么我导入应用后,应用图标没有出现在平台中?

您的浏览器可能没有更新您的缓存或 cookie。 尝试删除浏览器缓存和 cookie。 有关说明,请单击您正在使用的浏览器:

还是行不通? 请告诉我们!

‍为什么我在 XCode 中收到链接器错误(linker errors)?

当您忘记将一个或多个框架链接到您的项目时,很可能会出现链接器错误。 请查看 iOS 集成文档中最新 SDK 所需的框架,并确保您的项目链接到所有这些框架。 如果您仍然看到链接器错误,可能是您在 XCode 项目的构建设置中缺少 -ObjC 链接器标志,需要将其添加回 Other Linker Flags 字段。

‍为什么我的 iPad 2 模拟器上的插页式广告占据了整个屏幕?

插页式广告在 iPad 2 模拟器上可能会显得很大或“放大”。 这是因为模拟器没有将true实的设备模型传回给 Chartboost。 如果您使用不同的模拟器或实际设备,您将不会遇到此行为。

‍Chartboost 是否与 iOS 应用程序传输安全 (ATS) 兼容?

是的。 Chartboost SDK 和所有链接都与 App Transport Security 兼容。 如果您想运行链接到您公司网站的交叉推广活动,或者以其他方式将广告定向到应用商店以外的位置,请确保您使用 https,拥有有效的 SSL 证书,并遵循其他方法来确保您的 自定义 URL 链接仍然符合 ATS 标准。

为什么我会收到 “cannot initialize a parameter of type ‘id’ ” 或者“parameter of incompatible type ‘id>ChartboostDelegate<‘” 错误?

为避免此警告,您需要确保在使用 Chartboost 方法 [Chartboost startWithAppId:@"..." appSignature:@"..." delegate:self] 时传入的对象类 委托符合 ChartboostDelegate 协议。

检查您的 AppDelegate.h 文件并确保接口包含正确的委托引用:@interface AppDelegate : UIResponder <UIApplicationDelegate, ChartboostDelegate>

有关更详细的说明,请参阅 Apple 文档的“符合协议”部分。

为什么视频广告在我的 Android 应用程序中失败或显示黑屏?

您的 Android 应用的清单设置可能存在问题。 任何显示 Chartboost 广告的Activity都必须在其 Android 清单上的Activity条目中具有值 android:hardwareAccelerated="true",否则视频可能无法正确显示。

如果您在 Unity 之外的 Android 上进行开发,请检查您的 Android 清单文件以确保包含以下内容。 如果没有,添加这个并重新测试:

<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" />

您可以通过在 AndroidManifest.xml 中的顶级应用程序条目中添加 android:hardwareAccelerated='true' 来在整个应用程序中启用硬件加速,而不是为显示广告的个别Activity启用硬件加速

如果您通过 Unity 在 Android 上进行开发,并且您没有使用官方的 Chartboost 插件,请在调用 startWithAppId 方法后立即进行此调用:

Chartboost.setFramework(CBFramework.CBFrameworkUnity, unityVersion);

unityVersion 是 Application.unityVersion 返回的值 如果您仍然有问题,请随时与我们联系。 也请告诉我们...

  • 如果在“设置”>“开发人员选项”>“强制 GPU 渲染”下打开设备的“强制 GPU 渲染”设置后问题仍然存在。
  • 受影响设备的 Android 操作系统版本和型号。
  • 您正在使用的第三方框架或引擎的版本(例如 Unity、Adobe AIR)(如果适用)。
  • 您使用的是哪个版本的 Chartboost SDK。
  • 您使用的是哪个中介 SDK(如果适用)。
  • 还请包括您的游戏的 .apk 版本,以便我们对其进行测试。

我可以使用 Android Activity而不是视图来展示广告吗?

在某些情况下,原生 Android 或 Unity Android 开发人员可能更愿意使用Activity而不是视图来显示 Chartboost 广告。 虽然Activity在使用某些游戏引擎构建的游戏中可能效果更好,但我们鼓励您同时尝试这两种方法,因为这两种方法都有利有弊。

有没有办法在不链接 GooglePlayServices 库的情况下构建 Chartboost Unity 集成?

如果您愿意,您还可以绕过将 Google Play 服务库包含在您的 Unity 构建中的要求。 如果您从清单中删除以下内容:

<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>

然后系统将不再提示您运行设置对话框,并且您的应用程序应该能够照常运行。

‍Adobe AIR 中的“无法找到命名特征”(Unable to find named traits)错误是什么?

Exception in thread "main" java.lang.Error: Unable to find named traits: com.chartboost.plugin.air::Chartboost

如果您在构建应用程序时遇到与此类似的错误,通常表示 AIR 本机扩展未正确打包。 确保您已将此插件的扩展 ID 包含在您的应用程序描述符 XML 文件中。 还要验证当您导出构建时,Chartboost ANE 是否与您的应用程序打包在一起。

SDK集成有什么要求?

Chartboost 初始化调用必须在您的应用程序启动的前几秒内的硬启动和软启动期间进行,无论您的应用程序中有任何其他操作或用户交互。

请查看 SDK 集成指南了解更具体的要求。

‍我正在运行哪个版本的 SDK?

您可以通过调用以下方法找到您正在运行的 SDK 版本:

  • iOS

NSLog(@"Using Chartboost version: %@", [Chartboost getSDKVersion]);

  • 安卓

public static String getSDKVersion() {return CBConstants.SDK_VERSION;}

或者,您也可以...

  • 在 SDK 下载文件的自述文件中找到版本号。
  • 检查框架内嵌入的 Chartboost.h 文件的顶部(仅限 iOS)。
  • 设置 Charles Web Proxy 以确定 SDK 版本。

下载最新SDK

为什么我的 SDK 集成图标没有变绿?

如果您的集成图标没有变绿,这意味着您的应用程序尚未成功正确初始化我们的 SDK。 我们强烈建议您查看 Chartboost SDK 集成指南的初始化部分。

为了确认您的应用程序是否成功初始化了我们的 SDK,您可以使用应用程序 Charles the Web Proxy。 您正在寻找的初始化调用在我们的 Charles Page 的 Interpreting Charles Results 部分有详细说明。

为什么“请求发布权限”选项是灰色的?

  • 另一方面,要显示 Chartboost 广告,您的申请必须首先获得发布许可。 如果“请求发布权限”(Request publishing permissions)选项在您的平台中显示为灰色,这意味着 SDK 集成图标仍然不是绿色,我们尚未检测到来自您的应用程序的任何初始化调用。 我们建议修订 Chartboost SDK 集成指南。
  • 您可以使用应用程序 Charles the Web Proxy 来确认我们的 SDK 的初始化。 您正在寻找的初始化调用在我们的 Charles Page 的 Interpreting Charles Results 部分有详细说明。

您兼容哪些编码语言?

我们支持原生 Objective-C、Java、Unity 和 Adobe AIR。

如果我的应用程序未上线,我还能集成 SDK 吗?

是的,如果您的应用程序尚未在 App Store、Google Play Store 或 Amazon Appstore for Android 上架,您仍然可以集成 Chartboost SDK 并运行测试。 只需将您的应用程序添加到平台,在您的游戏上线后,按照该页面上的步骤添加您的市场 URL 或 ASIN。

在将我的应用程序提交到商店之前,我需要满足哪些要求?

如果您已集成 Chartboost SDK 并完成您的构建,您就可以提交到 App Store! 但是,在执行此操作之前,我们有一些提示和建议:

  • 确保您的 Chartboost 应用程序 ID 和签名正确。 一些开发者可能有多个应用程序或同一个应用程序的多个版本。 如果使用了错误的 ID,很遗憾,您将需要重新提交以解决此问题。
  • 使用 Charles(或任何其他网络调试代理)确保 Chartboost SDK 在每次启动时被初始化。 我们希望每次用户启动或恢复应用程序时都会进行 api/install 调用。
  • 执行最终质量检查以确保用户体验如您所愿。 例如,广告单元是否出现在适当的位置? 测试模式是用于此类测试的绝佳工具。
  • 如果提交到 Apple App Store,系统可能会询问您一些有关 IDFA 使用的问题。 您可以在此处找到有关符合 Apple IDFA 政策的 Chartboost SDK 的信息。

自 2016 年 6 月 1 日起,Apple 要求所有提交的应用程序必须支持 IPv6。

为什么每次我的应用程序激活时都必须初始化 Chartboost?

这是确保我们准确跟踪分析和捕获转化的最佳方式。 由于单个网络调用可能因多种原因而失败,因此明智的做法是在您的应用程序每次激活时初始化 Chartboost 以确保不会出现这种情况。

Chartboost SDK 收集哪些信息?

请阅读我们的条款和条件以了解更多信息。

您的系统使用哪些设备标识符来跟踪性能?

我们对 iOS 游戏使用 IFA(广告标识符); Google Play 游戏的 Android ID 和 Google Play 服务广告 ID。 了解更多

Chartboost 使用什么开源软件?

对于 iOS:AFNetworking

对于 Android:Volley

我可以使用 TestFlight 来测试我的集成吗?

是的,但是在这样做时您应该记住以下几点:

  • 每次 SDK 在 TestFlight 应用程序中请求设备标识符时,iOS 广告标识符 (IDFA) 都会不同。 某些 Chartboost 功能 – 例如用于排除/包含的设备列表 – 可能无法正常工作或按预期运行。
  • 由于上述原因,包含来自 TestFlight 构建的设备数据的分析报告可能不可靠
  • 请注意,这仅适用于测试,不适用于从 App Store 下载的生产版本

如何防止 Game Center 视图与 Chartboost 冲突?

因为 Apple 的 Game Center 视图可以覆盖 Chartboost activity,所以您可以使用 rootView 在单独的视图中显示插页式广告。 (SDK 版本 3.2+)例如:假设我们有一个双视图加载序列,其中一个加载视图和一个 MenuView 类型的菜单视图。 我们可以将 Chartboost rootView 设置为 MenuView 的一个实例。 之后,无论何时调用 showInterstitial,插页式广告都将仅针对 MenuView 视图进行预呈现。 在显示 MenuView 视图之前,不会出现插页式广告。 这样设置 [Chartboost sharedChartboost].rootView = gameMenu; 即可,其中 gameMenu 是一个已经初始化的 MenuView 实例。

一旦您从当前设置为 rootView 的视图切换出去,请务必将 rootView 设置为“nil”。 如果您错过了这一步,插页式广告将不会显示在您游戏的其他任何地方! 将 rootView 设置为 nil 这样设置[Chartboost sharedChartboost].rootView = nil; 即可。

注意:

  • rootView 框架应与窗口大小相同
  • rootView 应该是视图层次结构中的第一响应者

如何禁用Moat?

如果您不想启用 Moat,请删除 CHAMoatMobileAppKit.framework 并且不要将其与您的 Xcode 项目链接。 如果您不使用 Moat,则不需要在 XCode 项目的构建设置部分其他链接器标志属性中添加 -ObjC 条目。