0

我花了好几天试图解决这个问题,但它不起作用。

我正在使用来自: https ://github.com/lancelot1/ane-admob的 adMobManager

这是在新的谷歌播放服务更新之前工作的。

我的代码:

import com.codealchemy.ane.admobane.AdMobManager;
import com.codealchemy.ane.admobane.*;
var adMobManager:AdMobManager;
adMobManager = AdMobManager.manager;

if(adMobManager.isSupported){

    adMobManager.verbose = true;
    adMobManager.operationMode = AdMobManager.TEST_MODE;
    adMobManager.bannersAdMobId = "My AD ID";


    adMobManager.createBanner(AdMobSize.BANNER, AdMobPosition.TOP_CENTER, "TopBanner1", "My Ad id", true);



    adMobManager.showBanner("TopBanner1");


};

XML:

     <android>
    <manifestAdditions>
      <![CDATA[
      <manifest android:installLocation="auto">
                <uses-permission android:name="android.permission.INTERNET"/>
                <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
                <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
                <uses-permission android:name="android.permission.READ_PHONE_STATE" />
                <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
                <application android:hardwareAccelerated="true">
                    <meta-data android:name="com.google.android.gms.version" android:value="4452000" />
                    <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
                </application>              
    </manifest>]]>
    </manifestAdditions>
  </android>
  <extensions>
    <extensionID>com.codealchemy.ane.admobane</extensionID>
  </extensions>

以上应该可以工作(就像在更新之前所做的那样),但事实并非如此。

我能做些什么?

我需要尽快实施广告!!!

谢谢你。

编辑:我正在使用适用于 Android 的 AIR 14 SDK。

4

2 回答 2

1

S4VV4S,
首先你的代码不正确。有一些东西可以改进,但那些东西并不能解决问题,只能改进代码。

例如:

改变:

import com.codealchemy.ane.admobane.AdMobManager;
import com.codealchemy.ane.admobane.*;

import com.codealchemy.ane.admobane.*;

更好的是只导入您使用的类而不是全部。

那么,
如果您使用的是:

adMobManager.bannersAdMobId = "My AD ID";

然后您不需要在横幅创建期间指定特定的 admobId,因此您可以更改:

adMobManager.createBanner(AdMobSize.BANNER, AdMobPosition.TOP_CENTER, "TopBanner1", "My Ad id", true);

至:

adMobManager.createBanner(AdMobSize.BANNER, AdMobPosition.TOP_CENTER, "TopBanner1", null, true);

除非您想为特定横幅使用特定的 AdmobId(这在您想要跟踪特定横幅使用统计信息时很方便)。

但是在大多数应用程序中,您只需为所有横幅使用一个 ID,因此,由于您已经在以下位置指定了默认 AdMob ID:

adMobManager.bannersAdMobId = "My AD ID";

最好避免再次写入 Id,这可能是错误输入错误的来源。

最后,如果您在横幅创建期间使用自动显示(选项 true),那么您不需要使用:

adMobManager.showBanner("TopBanner1");

由于横幅它将自动显示。

因此删除它。如果要手动显示它,则需要在事件侦听器中使用 showBanner 调用,并且仅在实际加载横幅时才显示横幅。称为它只会产生一个未命中的镜头,这可能会导致问题。ANE 已经在内部处理了未命中的投篮,但最好避免机会。安全总比后悔好。

现在,对于主要问题本身。
事实上,我们目前也在我们的应用程序上使用带有最新 GPS 的最新更新 ANE,我们没有遇到问题,请求加载率为 99.8%。这也适用于在其应用程序/游戏中包含 ANE 的其他几位专业人士。

然而,我们也偶尔会在错过请求加载时遇到一些问题(这很烦人),但这种情况很少发生,而且只有插页式广告才会发生。

正如 William 和 tsukimi 正确指出的那样,logcat 将非常有助于更好地了解产生问题的原因。

分享我在类似问题上的经验,我可以给你以下建议:

检查 1:即使您正在使用:

adMobManager.operationMode = AdMobManager.TEST_MODE;

您必须提供在 AdMob 网站中创建的有效 AdmobID。如果使用了无效的 ID 或拼写错误,则请求将失败,因此横幅将不会显示。请确定正确的 AdMob ID

检查 2:请记住,横幅广告和插页式广告的 AdMob ID 不同。对于横幅,仅使用为横幅创建的 AmobId,而对于插页式广告,仅使用为插页式创建的 AdmobId。

检查 3:向应用程序添加事件侦听器并在调用它们时记录。
示例:创建调度程序实例

/**
 * Extension event dispatcher instance
 **/
private function get dispatcher():EventDispatcher
{
    // Return the extension dispatcher
    return adMobManager.dispatcher;
}

设置事件监听器

// onBannerLoaded Event Listener
if (!dispatcher.hasEventListener(AdMobEvent.BANNER_LOADED))
    dispatcher.addEventListener(AdMobEvent.BANNER_LOADED, onBannerLoaded);

处理事件

/**
 * onBannerLoaded Event listener
 *
 * @param e AdMobEvent Object
 **/
private function onBannerLoaded(e:AdMobEvent):void
{
    // Show the specific banner which did dispatch the event
    // e.data:String = Banner unique ID
    adMobManager.showBanner(e.data);
}

检查 4:确保设备与网络有实际连接,如果没有连接,则无法执行请求和/或完成,因此横幅将不会显示。我会建议创建一个连接监视器类来管理和处理连接丢失。

检查 5:考虑到 Banner 调试只能在实际设备上执行。您无法从桌面或任何模拟器查看或调试横幅工作流程。

这都是我想到的检查/建议列表,如果所有这些检查都完成了,你应该不会遇到问题。

最后一句话,我们从未遇到过 Admob 中的横幅出现任何错误,但是 Google 目前正在积极弃用旧 SDK,在弃用/更新期间的一些缺点可能会在 GPS 服务上注意到,直到它们的操作完成。

我希望答案是有帮助的。

于 2014-07-23T00:38:00.417 回答
0

我在 FlashDevelop 中遇到了类似的问题,但可能是因为我最近才开始使用 Code-Alchemy 的 ANE,所以我从来没有看到它正常工作。我尝试使用其他 ANE,顺便说一句,那些使用即将被弃用的独立 AdMob SDK 的确实可以工作(BrinkBit 和其他一些功能受限的免费 AdMob ANE)。Code-Alchemy's 和 lilili87222's ( https://github.com/lilili87222/admob-for-flash ) ANE 使用新的 Google Play 服务,到目前为止,我还没有收到任何广告。事件侦听器不会被调用。

因此,这不是一个正确的答案,但在短期内,您可以使用使用独立 SDK 的 ANE 之一。BrinkBit 的 ANE 商业化且功能丰富,但您可以试用演示版。如果您这样做,请不要忘记删除 <application> 下的 <meta-data>。否则,独立客户端会引发错误。此外,AdMob 只允许使用一个 <extensionID> 标记,因此如果您放置其他 ID,请注释掉用于 code-alchemy 的标记。

同时,让我们希望 Code-Alchemy 和/或 Google 修复该服务的任何问题。

于 2014-07-22T11:25:59.513 回答