处理 AdWhirl 失败

2023-12-01

您好,我正在开发一个 Android 应用程序并使用 AdWhirl 来显示我的广告。我希望能够处理 AdWhirl 不返回广告的情况。当它失败时,我想显示一个装饰栏。

谁能给我举个例子吗?

提前致谢,


好吧,我现在已经弄清楚了。有两种可能的方法,一种非常简单,另一种需要更多的工作。

最简单的方法

只要 adwhirl 布局没有任何内容可显示,它就保持不可见。所以你可以简单地创建一个FrameLayout包含后台的后备视图和前面的 adwhirl 视图,类似于:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="53dp"
        android:layout_gravity="center_horizontal"
        >
    <!-- fallback view -->
    <TextView
        android:id="@+id/ad_fallback"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:text="nothing to say..."
        >
</FrameLayout>

然后,您可以在代码中将视图添加到布局中(其中parentView是上面显示的膨胀布局):

final DisplayMetrics dm = activity.getResources().getDisplayMetrics();
final AdWhirlLayout adView = new AdWhirlLayout(activity, ADWHIRL_ID);
adView.setMaxWidth((int) (dm.density * 320));
adView.setMaxHeight((int) (dm.density * 53));
adView.setGravity(Gravity.CENTER);
parentView.addView(adView);

就是这样。

更复杂的方式

In GoodNews尽管我想要一种更复杂的方式:当 AdWhirl 忙于获取广告并且没有任何内容可填充内部广告横幅(作为应用程序中的资源提供,以便它甚至如果互联网不可用,则可以使用)应该显示。加载消息很简单,因为它可以像上面所示的那样实现,但是动态内部横幅有点棘手。

解决方案是 AdWhirl 提供的强大自定义事件,不幸的是,这些事件的文档记录很差。第一步是在 AdWhirl Web 界面中创建自定义事件:

  1. 调出“广告网络设置”
  2. 点击顶部的“广告自定义事件”按钮
  3. 输入任意名称(例如“fallback”)和函数名称(后者将直接映射到 Java 类中的方法名称)
  4. 启用该事件并为其分配 0%
  5. 现在调出“回填优先级”屏幕并将回退事件移至列表末尾

上面的配置可确保仅当 AdWhirl 无法展示任何真实广告时才会触发您的自定义事件。

现在您需要在代码中处理该事件。因此你需要一个实现的类AdWhirlLayout.AdWhirlInterface并定义一个不带参数的公共方法,其名称等于自定义事件指定的函数名称。然后,此方法可以将您的特定视图注入 AdWhirl 布局中:

class AdWhirlEventHandler implements AdWhirlLayout.AdWhirlInterface {
    private final AdWhirlLayout adView;

    public AdWhirlEventHandler(AdWhirlLayout adView) {
        this.adView = adView;
    }

    @Override
    public void adWhirlGeneric() {
        // nothing to be done: Generic notifications should also be 
        // configurable in the AdWhirl web interface, but I could't find them
    }    

    /**
     * Will be called by AdWhirl when our custom event with the function name 
     * "fallback" is fired. Called via reflection.
     */
    public void fallback() {
        try {
            final View fallbackView = 
                ... // inflate the view to be shown here
            adView.pushSubView(fallbackView);

            /*
             * reset backfill chain and schedule next ad update
             */
            adView.adWhirlManager.resetRollover();
            adView.rotateThreadedDelayed();
        } catch (MyExpectedException ex) {
            /*
             * forward to next option from the backfill list
             */
            adView.rolloverThreaded();             
        }
    }
}

现在您需要向以下位置注册您的事件处理程序AdWhirlLayout像这样:

adView.setAdWhirlInterface(new AdWhirlEventHandler(adView));

就是这样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理 AdWhirl 失败 的相关文章

  • Android:初始化本机 AudioRecord 对象时 AudioRecord 错误代码 -20

    Android 我想从麦克风读取缓冲区 以便我可以对其执行处理 以下是我的代码 int sampleRateInHz 8000 44100 22050 and 11025 int channelConfig AudioFormat CHAN
  • socket.io xhr 在连接缓慢时出现错误(3G 移动网络)

    当我在 3G 移动网络 互联网连接速度慢 上测试我的真实聊天应用程序时 Socket io反复断开然后重新连接 我已经记录了原因 它说 xhr post error 这提高了 transport error 然后断开连接 我可以知道什么意思
  • Android 中的列表(特别是 RecyclerView 和 CardView)如何工作

    请原谅我问这个问题 但我是 Android 开发新手 尽管我正在尝试了解developer android com 网站上的基础知识 但大多数示例 即使他们说它们是为 Android Studio 构建的 尚未设置为使用 Gradle 因此
  • 为什么反射会减慢Android手机的速度

    我多次读到反射会降低手机性能 这有多真实 例如 在我的例子中 我从 Web 服务获取一些参数 这些参数与我在 Android 应用程序中的类的参数同名 所以我只是使用java字段和反射设置这些参数的值 它似乎并没有降低性能 有人可以向我解释
  • Fragment 问题中的 ExpandableListView

    我正在尝试在片段中实现可扩展列表视图 没有错误出现 当我尝试记录两个的输出时List
  • Android 全屏对话框确认和拒绝操作

    材料设计中的全屏对话框应该在操作栏 工具栏上有确认和拒绝操作 我的问题是 我该怎么做 显示对话框 getFragmentManager beginTransaction add R id container new MyDialogFrag
  • 退出设备上的 system.img

    我正在为我们部署给客户的设备 LG p509 Optimus 1 开发自动应用程序更新解决方案 我们可以控制这些设备 并且目前在它们上安装自定义内核 但不是完整的自定义 ROM 由于我们试图在设备上自动更新我们的应用程序 因此我们需要由我们
  • ADB TCPIP 连接问题

    我有两台 Galaxy S3 其中一个已扎根 另一个则未扎根 因此 当我尝试通过本地网络连接它们时 计算机可以看到已root的计算机 但是正常的就卡在tcpip这一步了 所以 我写 adb tcpip 5555 It says restar
  • 需要 Android webview window.open() 和 window.close() 的信息

    我正在开发一个安卓应用程序 这是我网站的 WebView 该网站包含一个弹出按钮 单击该按钮后 将打开一个新窗口并显示内容 该链接可以来自外部站点 然而 当我实现此操作时 新选项卡正在打开 之后它会弹出以打开浏览器 尽管在 Web 视图中打
  • Android -room 持久库 - DAO 调用是异步的,因此如何获取回调?

    从我读到的Room 不允许您在主线程上发出数据库查询 因为可能会导致主线程延迟 所以想象一下我正在尝试更新 UI 主线程上的文本视图 其中一些数据我将如何得到回调 让我给你举个例子 想象一下 我想将我的业务模型数据存储到一个名为 事件 的对
  • 是否可以通过 Android 应用程序来录音?

    我是一名开发人员 希望创建一个 Android 应用程序来记录电话 这是出于我个人的需要 为了我自己的目的和记录而记录电话 是否有可能做到这一点 是否可以访问麦克风以及通过扬声器发出的声音 我对 Android 开发有点陌生 所以请耐心等待
  • Android 上的 MIDI:Java 和/或 AIR 库

    一段时间以来 我一直在考虑在 iPad 上 重新 构建一个应用程序 其中我将使用 Objective C 和DSMI http dsmi tobw net 将 MIDI 信号发送到主机 这还不错 我的意思是 除了实际编写应用程序之外 现在我
  • Android SearchView 在启动时隐藏键盘

    我有一个小问题正在尝试解决 当我打开应用程序时 键盘会显示输入搜索视图的查询 不过 我只想在单击搜索视图时显示键盘 我该如何解决 Thanks 这对我有用 用于隐藏焦点的代码 searchView SearchView view findV
  • 受信任的网络活动 - 地址栏不隐藏(Android 72 的 Chrome)

    我已经关注了this https developers google com web updates 2017 10 using twa了解如何使用受信任的 Web 活动的指南 一切正常 但地址栏仍然出现 一开始我认为这是因为当应用程序正在
  • 如何在android中通过蓝牙向配对设备发送短信?

    在我的应用程序中 我想通过蓝牙发送和接收短信 我可以在列表视图中看到配对设备名称和地址的列表 但是当我尝试向配对设备发送文本时 什么也没有发生 在其他设备中没有收到文本 这是我向配对设备发送消息的代码 private void sendDa
  • Android 标记如何实现拖放?

    你好 我正在 Android 中开发 MapView 应用程序 我有三个标记 我希望稍后能够使用 Google Map API getlocation function 为了尝试一下 我想使用拖放功能移动标记 然后检查位置 任何人都可以通过
  • 禁用 Android 菜单组

    我尝试使用以下代码禁用菜单组 但它不起作用 菜单项仍然启用 你能告诉我出了什么问题吗 资源 菜单 menu xml menu menu
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • LifeCycleAware Fragment 中的片段生命周期事件

    我有一个生命周期感知片段和一个LifecycleObserver class public class MyFragment extends Fragment Override public void onCreate Nullable B
  • Android GetPTLAFormat 上的 Phonegap 错误

    我们正在开发一个使用 jQuery 移动和电话间隙的应用程序 一切似乎都工作正常 但是当在连接的 Android 手机上运行应用程序时 我们在 Eclipse logcat 中看到大量类似这样的错误 0 GetPTLAFormat inva

随机推荐

  • 如何使用 f:ajax event=change 将当前迭代的项目发送到 h:selectBooleanCheckbox

    我有以下表格
  • 使用 C# 在 Visual Studio 中的 3 个 Windows 窗体之间传递数据

    我有一个 Windows 应用程序 有 3 个表单 Form1 2 3 我想发送文本框的文本form2 to form1然后同样的文字来自form1 to form3 那是 文本来自FORM2 gt FORM1 gt FORM3 表单1 有
  • 通过使用文件重定向为其提供输入来运行 Java 程序

    我正在尝试使用文件重定向来运行 Java 程序 我正在用这个简单的程序测试它 package netbeans sanbdox public class Sanbdox public static void main String args
  • 如何禁用Seaborn中hue的嵌套?

    使用时hueSeaborn 中条形图上的参数会更改条形的颜色和位置 就像下面的例子 没有色调的绘图 import seaborn as sns df x 1 2 3 4 y 5 6 7 8 hue a b b a sns barplot d
  • H2 控制台访问 h2 以外的数据库

    H2 控制台 http localhost 8082 login jsp 可以选择查看任何数据库的详细信息 如果我们要与 mysql 或其他数据库服务器通信 我们应该将 jdbc 驱动程序复制到哪里 将 jdbc 驱动程序文件 mysql
  • 在 SharePoint 2010 中编辑 SQL 扩展属性

    如何在 SharePoint 2010 中编辑表的扩展属性 到目前为止 我认为没有任何 开箱即用 的东西可以做到这一点 因此 我假设这意味着我必须创建一个自定义 Web 部件来提取表的扩展属性 然后允许我对其进行编辑 然后在编辑完成后 We
  • 设备实例 ID 的驱动器盘符

    如何从驱动器号获取设备实例 ID 我的流程从设备到达消息开始 我已成功从到达消息中获取驱动器盘符并打开 DVD 托盘 我搜索了各种Setup API项 但我还没有找到任何可以让我从驱动器号到设备实例 ID 的信息 C 或 VB NET 中的
  • 如何将查询结果分解为单独的列?

    接续我之前的问题 要作为列插入表中的栅格记录的像素值 想象一下我的查询结果有 5300 行 结果如下 value 15624 15899 56267 85955 我希望它们位于表格中 前 53 行位于val1列 第二 53 行val2专栏等
  • BigQuery - 对数组进行分组

    我想对数组进行分组 示例查询 standardSQL WITH project dataset table AS SELECT compute description key application value scaled server
  • Firebase runloop (3.0.0) 中未捕获的异常。请向 [email protected] 举报 [已关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我的离线功能有问题 我使用 firebase 在我的项目中打开离线功能 一切都很好 直到我完全关闭应用程序并重新打开它 它造成了崩溃 这是日志 05 23 07 44 58 407 7
  • JUCE 和 React Native - 链接器错误“ld:未找到 -lReact 的库”

    我在使用 CocoaPods 和 React Native 时遇到此链接器错误 ld library not found for lReact 我已按照指南进行操作https facebook github io react native
  • 在flaskext.mysql中寻找dictcursor的等价物

    我编写了一个Python Flask应用程序 最初使用MySQLdb来访问MySQL 后来我出于同样的目的切换到flaskext mysql 但现在当我使用这个模块时 我看不到如何获取字典结构的游标 当我使用 MySQLdb 模块时 我使用
  • WTForms-JSON 不适用于 FormFields

    当我使用 WTForms JSON 时 嵌套表单 FormFields 不会填充数据 我无法发现我的错误 请参阅下面的示例 from flask import Flask request jsonify from flask wtf imp
  • 管理两个 UI 的最佳方法是什么?

    我创建了两个用户界面 如何关闭第一个并激活下一个 Google Apps 脚本下是否可以有两个 UI 我尝试过类似的事情 var app UiApp getActiveApplication app add app loadComponen
  • Matlab:字符串数组中的数字数组索引(无循环)

    我正在做 MIT OCW MATLAB 入门课程中的一系列问题 你可以看到here 这是问题 9 第 g iii 部分 我有一个矩阵 其中包含一门课程的最终成绩 所有成绩的范围都从 1 到 5 我还有另一个数组 其中仅包含字母 F to A
  • 在构造的字符串上使用 execvp 的问题

    我正在尝试编写一个 shell 其构造的一部分是从用户输入的字符串 缓冲区 执行代码 然而 当我尝试使用附加输入 ae echo a 执行 execvp 字符串时 它总是会搞砸并返回 1 我不知道为什么 这是相关的部分 char buffe
  • 万事达卡的正则表达式

    我找到了信用卡类型 MasterCard 的以下正则表达式 public static readonly string CreditMasterCard 5 1 5 0 9 14 然后我写了下面的代码 Regex regexMasterCa
  • 如何获取多维数组的交集?

    我有一个多维数组的数组 每个数组代表一个搜索结果集 我正在尝试找出如何过滤这组数据以仅包含每个数组中存在的数组 注意 下面显示的索引各自代表多维数组 每个数组都有一个深度嵌套的Id可用于比较的键 The Id位于 reference var
  • PlaceAutocompleteFragment 无法解析

    在我的应用程序中 我添加了谷歌地图 它们工作正常 我想添加一个 PlaceAutocompleteFragment 我正在使用已经为地图生成的密钥 并且我已启用来自 google console 的 Places Api 选项 我已将这些添
  • 处理 AdWhirl 失败

    您好 我正在开发一个 Android 应用程序并使用 AdWhirl 来显示我的广告 我希望能够处理 AdWhirl 不返回广告的情况 当它失败时 我想显示一个装饰栏 谁能给我举个例子吗 提前致谢 好吧 我现在已经弄清楚了 有两种可能的方法