时间:2021-07-15 | 标签: | 作者:Q8 | 来源:华为开发者联盟官网网络
小提示:您能找到这篇{HUAWEI Ads激励广告}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的HUAWEI Ads激励广告内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您! |
< ">激励广告 < ">激励广告是一种全屏幕的视频广告,用户可以选择点击观看,以换取相应奖励。 < ">< font-size: 18px;">添加激励广告 < ">1.创建激励广告对象。 < ">创建RewardAd对象,示例代码如下: public class RewardedVideoActivity extends Activity { // "testx9dtjwj8hp"为专用的测试广告位ID,App正式发布时需要改为正式的广告位ID private static final String AD_ID = "testx9dtjwj8hp"; private RewardAd rewardAd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_rewarded); // 创建激励广告对象 createRewardAd(); } private void createRewardAd() { rewardAd = new RewardAd(this, AD_ID); } } < ">2.获取广告。 < ">调用RewardAd对象的loadAd()方法来获取广告,示例代码如下: /** * 加载激励广告 */ private void loadRewardAd() { if (rewardAd == null) { rewardAd = new RewardAd(this, AD_ID); } RewardAdLoadListener listener= new RewardAdLoadListener() { @Override public void onRewardedLoaded() { // 激励广告加载成功 } @Override public void onRewardAdFailedToLoad(int errorCode) { // 激励广告加载失败 } }; rewardAd.loadAd(new AdParam.Builder().build(), listener); } < ">3.展示广告。 < ">调用RewardAd的show()方法来显示广告,在此之前需要调用isLoaded()方法来确认广告已经加载完成。 < ">如下所示: /** * 展示激励广告 */ private void rewardAdShow() { if (rewardAd.isLoaded()) { rewardAd.show(RewardedVideoActivity.this, new RewardAdStatusListener() { @Override public void onRewardAdOpened() { // 激励广告被打开 ... } @Override public void onRewardAdFailedToShow(int errorCode) { // 激励广告展示失败 ... } @Override public void onRewardAdClosed() { // 激励广告被关闭 ... } @Override public void onRewarded(Reward reward){ // 激励广告奖励达成,发放奖励 ... } }); } } < ">说明 < ">onRewarded方法中,如果在广告位配置了奖励物品信息,则会传入奖励物品信息的对象reward,通过reward.getAmount()方法获取奖励物品的数量,通过reward.getName()方法获取奖励物品的名称,推荐立即发放奖励,同时在服务端做校验,判断奖励是否生效。如果未配置奖励物品信息,则根据实际场景发放奖励。 < ">< font-size: 18px;">测试激励广告 < ">测试激励广告时,需要使用专门的测试广告位ID来获取测试广告,以避免在测试过程中产生无效的广告点击量。测试广告位ID仅作为功能调试使用,不可用于广告变现。您需要在应用发布前申请真实的广告位ID,并替换测试广告位ID。 < ">以下表格中提供了激励广告的专用测试广告位ID: < ">下载激励广告的示例代码并运行,可以看到如下效果图: < ">另外您也可以通过学习Codelab中的教程来集成激励广告。 < ">< font-size: 18px;">校验激励广告服务端验证回调 < ">服务端验证回调是指HUAWEI Ads广告平台发送给媒体服务器的网址请求,其中带有特定的查询参数,用来通知媒体服务器某位用户因为与激励视频广告互动而应予以奖励,从而规避欺骗的行为。 < ">< font-size: 18px;">奖励用户 < ">在给用户发奖励时,要把握好用户体验和奖励验证之间的平衡。因为服务器端回调,可能会出现延迟,因此我们建议客户端立即奖励用户,同时在收到服务器端回调时对所有奖励进行验证。这种做法可确保奖励符合发放条件,同时提供良好的用户体验。 < ">对于某些应用而言,奖励是否达到发放条件非常重要,用户可适当接受延迟。这时,最佳做法是等待服务器端回调完成验证,再向用户发放奖励。 < ">校验服务端验证回调 < ">1.设置激励广告的奖励配置。 < ">您在HUAWEI Ads媒体服务平台上申请激励视频广告位时选择“媒体管理(点击媒体名)>新增展示位>选择激励视频(点击下一步,进入编辑页面)”,设置奖励类型和奖励数量,并点击“高级设置”,设置服务器端验证的URL。如下图: < ">2.(可选)设置自定义数据和userId。 < ">您在App中请求激励广告之前对激励广告对象设置自定义数据data和userId。 RewardAd rewardAd = new RewardAd(RewardActivity.this, getString(R.stri广告片制作ng.ad_id_reward)); RewardVerifyConfig config = new RewardVerifyConfig.Builder().setData("CUSTOM_DATA") .setUserId("1234567") .build(); rewardAd.setRewardVerifyConfig(config); ... rewardAd.loadAd(new AdParam.Builder().build(), rewardAdLoadListener); < ">说明 < ">如果没有设置data和userId,不影响发放奖励事件上报但是服务端验证的参数中没有这两个字段。如果设置data和userId,必须在展示广告之前设置并且URLEncode之后,长度不超过1024个字符,否则影响服务端验证。 < ">3.获取要验证的内容。 < ">用户观看完激励广告时,HUAWEI Ads服务端会把需要验证的参数以及KeyId和sign传给媒体提供的URL: https://www.example.com/feedback(即步骤一中配置的验证URL)。请求体: { "adId" : "testx9dtjwj8hp", "data" : "CUSTOM_DATA", "keyId" : "12345678", "rewardAmount" : "10", "rewardName" : "金币", "sign" : "OA33u6mypnhE4hbmF32N/ibYi1uXt72nDDyYMwjDI6JXVVFKePZYo4F7Fuk2MaG......", "uniqueId" : "3361626337333932313435313430373438383561376265636130393939313166", "userId" : "1234567" } < ">服务器端验证回调查询参数说明: < ">4.组装验证参数。 < ">验证内容(除sign、keyId)格式顺序如下: < ">adId={adId}&data={data}&rewardAmount={rewardAmount}&rewardName={rewardName}&uniqueId={uniqueId}&userId={userId} < ">其中‘{}’里面表示参数的值,且参数顺序不能变。假如参数为null或者空字符串,则url中不拼接该参数,然后用sha256计算散列值,得到paramContentData。 < ">示例代码如下: String adId = request.getParameter("adId"); String data = request.getParameter("data");
String userId = request.getParameter("userId"); String param = "adId=" + adId + "&data=" + data + "&rewardAmount=" + rewardAmount + "&rewardName=" + rewardName + "&uniqueId=" + uniqueId + "&userId=" + userId; String sha256Value = Sha256Util.digest(param); byte[] paramContentData = sha256Value.getBytes(Charset.forName("UTF-8")); < ">5.获取公钥列表。 < ">1.在HUAWEI Ads 媒体服务平台查看对应的激励视频广告位,点击“获取密钥”按钮获取“开发者ID”和“密钥”: < ">2. 通过如下接口获得华为提供的公钥列表: < ">接口URL:https://ppscrowd-dre.op.dbankcloud.com/action-lib-track/publickeys < ">将body通过密钥进行HMAC-SHA256加密得到签名,替换到Authorization中,并设置“开发者ID”和Authorization到Header中。 < ">示例代码如下: String data = ""; String url = "https://ppscrowd-dre.op.dbankcloud.com/action-lib-track/publickeys"; String authorization = "Digest validTime="{0}", response="{1}""; // 开发者ID String userId = "YOUR_PUBLISHER_ID"; // 密钥推广软文分为几类 String key = "YOUR_KEY";
HttpClient httpclient = HttpClients.createDefault(); HttpGet request = new HttpGet(); try { String validTime = String.valueOf(System.currentTimeMillis()); String body = validTime + ":/publickeys"; byte[] keyBytes = Base64.decodeBase64(key); byte[] bodyBytes = body.getBytes(Charsets.UTF_8);
Mac mac = Mac.getInstance("HmacSHA256"); SecretKey secretKey = new SecretKeySpec(keyBytes, "HmacSHA256"); mac.init(secretKey); byte[] signatureBytes = mac.doFinal(bodyBytes);
String signature = (signatureBytes == null) ? null : Hex.encodeHexString(signatureBytes); authorization = MessageFormat.format(authorization, validTime, signature); request.setURI(new URI(url)); request.setHeader("userId", userId); request.setHeader("Authorization", authorization); HttpResponse response = httpclient.execute(request); data = EntityUtils.toString(response.getEntity()); } catch (Exception e) { } } < ">返回data消息体: { "keys": [ { "keyId":"12345678", "publicKey":"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1GLi4uc3c9PVxkQgUFVCTElt" }, { "keyId": "22345678", "publicKey":"LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1GLi4uc3c9PVxkQgUFVCTElt" } ] } < ">返回消息结构体: < ">Key结构体: < ">6.执行验证。 < ">a.根据keyId从公钥列表中找到对应的base64编码后的publicKey。 < ">b.然后将paramContentData、publicKey和sign作为SHA256withRSA数字签名算法的入参,执行验证。 < ">示例代码如下: public static boolean verify(byte[] data, String publicKey, String sign, String signatureAlgorithm) { try { byte[] keyBytes = base64Decode(publicKey); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicK = keyFactory.generatePublic(keySpec); Signature signature = Signature.getInstance(signatureAlgorithm); signature.initVerify(publicK); signature.update(data); return signature.verify(base64Decode(sign)); } catch (InvalidKeyException | SignatureException | UnsupportedEncodingException | InvalidKeySpecException | NoSuchAlgorithmException e) { return false; } } private static byte[] base64Decode(String encoded) throws UnsupportedEncodingException { return Base64.decodeBase64(encoded.getBytes("UTF-8")); } |
上一篇:ironSource:何种用户留存模型,永远留住你的玩家
下一篇:为什么OVO是出海印尼必备支付方式?
基于对传统行业渠道的理解,对互联网行业的渠道我们可以下这样一个定义:一切...
小米应用商店的后台操作和苹果是比较相似的,因为都能填写100字符关键词,允许...
小米的规则目前是在变更中的,但是根据经验小米的搜索排名评分的高低是个很重...
为了恰饭,有时候是要接入一些广告的,所以FB也专门有一个广告的SDK,这就是A...
在 2018 年于旧金山举行的游戏开发者大会上,Amazon Web Services (AWS) 曾宣布,目前世...
关于Facebook Audience Network如何收款的问题,其实官方已经给了详细的步骤。本文主要...
本文介绍了Audience Network对广告载体的质量检查,以及它重点广告形式需要注意的问...
随着iOS开发,作为开发者或公司需要针对iOS App开发涉及的方方面面作出对应的信息...
Facebook和谷歌对出海企业广告渠道都很熟悉,但事实上,在国外还有一些渠道也很...
卖家从做号的第1分钟开始,就一定要想好变现路径是什么?一定要以变现为目的去...
小提示:您应该对本页介绍的“HUAWEI Ads激励广告”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通HUAWEI Ads激励广告的相关事宜。
关键词:HUAWEI Ads激励广告,HUAWEI A