有人知道AdWhirl的运作方式吗?
我为Greystripe设置了自定义事件,如果尚未初始化SDK,则可以在其中初始化SDK,然后刷新BannerView,但看不到自定义事件被调用。所以我的主要问题是,AdWhirl如何以及何时调用自定义事件?口粮和结转额是多少?我没有对它们做任何事情(主要是因为我不知道为什么需要它们。AdWhirl对它们有什么作用?)
另外,如何控制AdWhirl何时刷新横幅?我想将刷新与按钮动作联系在一起。
在过去的两天里,我一直在不停地搜索在线内容,并阅读了许多人们共享的教程和示例Java类,但没有一个起作用。看起来AdWhirl停滞不前。对于我来说,目前还不清楚AdWhirl的工作原理:它在应用程序和您要在广告中使用的所有广告机会之间进行中介。对于我来说,这是一个太高的理解,无法前进。 :(
最佳答案
您是否已阅读wiki page,其中描述了如何使用自定义事件?您基本上是在后端用户界面中创建一个自定义事件,其行为类似于另一个广告网络,并且可以配置其流量。然后,您可以实现在后端命名的函数名称。唯一不直观的部分是您必须实现AdWhirlInterface来侦听自定义事件,这意味着创建adWhirlGeneric()方法。虽然此方法可以为空,但在创建自己的测试事件时没有看到它被调用。最后,请确保设置AdWhirlInterface。
因此,假设您在后端使用以下方法创建了一个网络:
Name: Test Network
Function Name: testEvent
并为其提供流量(我建议在测试时为它提供100%的流量),那么您的代码将如下所示:
public class MyActivity extends Activity {
...
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
...
}
...
public void testEvent() {
// Place event code here.
Log.d("Cust_Network", "Cust network got called!");
}
}
若要控制广告刷新,例如,当单击按钮时,在AdWhirlLayout上调用rotateThreadedNow()。这将使AdWhirl完成随机确定新广告网络并调用正确的适配器或自定义事件的过程。如果选择使用此路线,则可能不需要自动刷新,在这种情况下,应禁用后端的自动刷新。
定量对象使用配置数据中的数据填充。每个口粮代表一个广告网络,并具有代表各个广告网络ID,在后端中设置的权重百分比和回填优先级的键。回填优先级是AdWhirl将在原始请求未填写时从其请求的网络订单。进行回填优先级处理的过程称为过渡。在实现自己的自定义事件时,您将需要对过渡有所了解。
提到的Wiki页面包含以下建议,可添加到您的自定义事件中:
// In your custom event code, you'll want to call some of the below methods.
//
// On success:
// this.adWhirlLayout.adWhirlManager.resetRollover();
// this.adWhirlLayout.rotateThreadedDelayed();
//
// On failure:
// this.adWhirlLayout.rolloverThreaded();
如果您的自定义事件正确获取了广告,则您将需要重置过渡顺序(以便下一个请求将具有正确的回填顺序),然后调用rotateThreadedDelayed(),以便在您指定的时间段内自动进行刷新后端。如果广告请求失败,您将需要调用rolloverThreaded(),以便AdWhirl可以通过其滚动过程来检查其他已配置的广告网络中的广告。