HUAWEI Ads激勵(lì)廣告,華為酷炫廣告-ESG跨境

HUAWEI Ads激勵(lì)廣告,華為酷炫廣告

來源網(wǎng)絡(luò)
來源網(wǎng)絡(luò)
2022-07-05
點(diǎn)贊icon 0
查看icon 695

HUAWEI Ads激勵(lì)廣告,華為酷炫廣告HUAWEI Ads激勵(lì)廣告激勵(lì)廣告激勵(lì)廣告是一種全屏幕的視頻廣告,用戶可以選擇點(diǎn)擊觀看,以換取相應(yīng)獎(jiǎng)勵(lì)。添加激勵(lì)廣告1.創(chuàng)建激勵(lì)廣告對象。創(chuàng)建RewardAd對象,示例代碼如下:public class RewardedVideoActivity extends Activi......

HUAWEI Ads激勵(lì)廣告,華為酷炫廣告





HUAWEI Ads激勵(lì)廣告

激勵(lì)廣告

激勵(lì)廣告是一種全屏幕的視頻廣告,用戶可以選擇點(diǎn)擊觀看,以換取相應(yīng)獎(jiǎng)勵(lì)。

添加激勵(lì)廣告

1.創(chuàng)建激勵(lì)廣告對象。

創(chuàng)建RewardAd對象,示例代碼如下:

public class RewardedVideoActivity extends Activity {

  // testx9dtjwj8hp為專用的測試廣告位ID,App正式發(fā)布時(shí)需要改為正式的廣告位ID

  private static final String ADID = testx9dtjwj8hp;

  private RewardAd rewardAd;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activityrewarded);

    // 創(chuàng)建激勵(lì)廣告對象

    createRewardAd();

  }

  private void createRewardAd() {

    rewardAd = new RewardAd(this, ADID);

  }

}

2.獲取廣告。

調(diào)用RewardAd對象的loadAd()方法來獲取廣告,示例代碼如下:

/**

* 加載激勵(lì)廣告

*/

private void loadRewardAd() {

  if (rewardAd == null) {

    rewardAd = new RewardAd(this, ADID);

  }

  RewardAdLoadListener listener= new RewardAdLoadListener() {

    @Override

    public void onRewardedLoaded() {

      // 激勵(lì)廣告加載成功

    }

    @Override

    public void onRewardAdFailedToLoad(int errorCode) {

      // 激勵(lì)廣告加載失敗

    }

  };

  rewardAd.loadAd(new AdParam.Builder().build(), listener);

}

3.展示廣告。

調(diào)用RewardAd的show()方法來顯示廣告,在此之前需要調(diào)用isLoaded()方法來確認(rèn)廣告已經(jīng)加載完成。

如下所示:

/**

* 展示激勵(lì)廣告

*/

private void rewardAdShow() {

  if (rewardAd.isLoaded()) {

    rewardAd.show(RewardedVideoActivity.this, new RewardAdStatusListener() {

      @Override

      public void onRewardAdOpened() {

        // 激勵(lì)廣告被打開

        ...

      }

      @Override

      public void onRewardAdFailedToShow(int errorCode) {

        // 激勵(lì)廣告展示失敗

        ...

      }

      @Override

      public void onRewardAdClosed() {

        // 激勵(lì)廣告被關(guān)閉

        ...

      }

      @Override

      public void onRewarded(Reward reward){

        // 激勵(lì)廣告獎(jiǎng)勵(lì)達(dá)成,發(fā)放獎(jiǎng)勵(lì)

        ...

      }

    });

  }

}

說明

onRewarded方法中,如果在廣告位配置了獎(jiǎng)勵(lì)物品信息,則會(huì)傳入獎(jiǎng)勵(lì)物品信息的對象reward,通過reward.getAmount()方法獲取獎(jiǎng)勵(lì)物品的數(shù)量,通過reward.getName()方法獲取獎(jiǎng)勵(lì)物品的名稱,推薦立即發(fā)放獎(jiǎng)勵(lì),同時(shí)在服務(wù)端做校驗(yàn),判斷獎(jiǎng)勵(lì)是否生效。如果未配置獎(jiǎng)勵(lì)物品信息,則根據(jù)實(shí)際場景發(fā)放獎(jiǎng)勵(lì)。

測試激勵(lì)廣告

測試激勵(lì)廣告時(shí),需要使用專門的測試廣告位ID來獲取測試廣告,以避免在測試過程中產(chǎn)生無效的廣告點(diǎn)擊量。測試廣告位ID僅作為功能調(diào)試使用,不可用于廣告變現(xiàn)。您需要在應(yīng)用發(fā)布前申請真實(shí)的廣告位ID,并替換測試廣告位ID。

以下表格中提供了激勵(lì)廣告的專用測試廣告位ID:

下載激勵(lì)廣告的示例代碼并運(yùn)行,可以看到如下效果圖:

另外您也可以通過學(xué)習(xí)Codelab中的教程來集成激勵(lì)廣告。

校驗(yàn)激勵(lì)廣告服務(wù)端驗(yàn)證回調(diào)

服務(wù)端驗(yàn)證回調(diào)是指HUAWEI Ads廣告平臺發(fā)快遞給媒體服務(wù)器的網(wǎng)址請求,其中帶有特定的查詢參數(shù),用來通知媒體服務(wù)器某位用戶因?yàn)榕c激勵(lì)視頻廣告互動(dòng)而應(yīng)予以獎(jiǎng)勵(lì),從而規(guī)避欺騙的行為。

獎(jiǎng)勵(lì)用戶

·在給用戶發(fā)獎(jiǎng)勵(lì)時(shí),要把握好用戶體驗(yàn)和獎(jiǎng)勵(lì)驗(yàn)證之間的平衡。因?yàn)榉?wù)器端回調(diào),可能會(huì)出現(xiàn)延遲,因此我們建議客戶端立即獎(jiǎng)勵(lì)用戶,同時(shí)在收到服務(wù)器端回調(diào)時(shí)對所有獎(jiǎng)勵(lì)進(jìn)行驗(yàn)證。這種做法可確保獎(jiǎng)勵(lì)符合發(fā)放條件,同時(shí)提供良好的用戶體驗(yàn)。

·對于某些應(yīng)用而言,獎(jiǎng)勵(lì)是否達(dá)到發(fā)放條件非常重要,用戶可適當(dāng)接受延遲。這時(shí),最佳做法是等待服務(wù)器端回調(diào)完成驗(yàn)證,再向用戶發(fā)放獎(jiǎng)勵(lì)。

校驗(yàn)服務(wù)端驗(yàn)證回調(diào)

1.設(shè)置激勵(lì)廣告的獎(jiǎng)勵(lì)配置。

您在HUAWEI Ads媒體服務(wù)平臺上申請激勵(lì)視頻廣告位時(shí)選擇“媒體管理(點(diǎn)擊媒體名)新增展示位選擇激勵(lì)視頻(點(diǎn)擊下一步,進(jìn)入編輯頁面)”,設(shè)置獎(jiǎng)勵(lì)類型和獎(jiǎng)勵(lì)數(shù)量,并點(diǎn)擊“高級設(shè)置”,設(shè)置服務(wù)器端驗(yàn)證的URL。如下圖:

2.(可選)設(shè)置自定義數(shù)據(jù)和userId。

您在App中請求激勵(lì)廣告之前對激勵(lì)廣告對象設(shè)置自定義數(shù)據(jù)data和userId。

RewardAd rewardAd = new RewardAd(RewardActivity.this, getString(R.string.adidreward));

RewardVerifyConfig config = new RewardVerifyConfig.Builder().setData(CUSTOMDATA)

  .setUserId(1234567)

  .build();

rewardAd.setRewardVerifyConfig(config);

...

rewardAd.loadAd(new AdParam.Builder().build(), rewardAdLoadListener);

說明

如果沒有設(shè)置data和userId,不影響發(fā)放獎(jiǎng)勵(lì)事件上報(bào)但是服務(wù)端驗(yàn)證的參數(shù)中沒有這兩個(gè)字段。如果設(shè)置data和userId,必須在展示廣告之前設(shè)置并且URLEncode之后,長度不超過1024個(gè)字符,否則影響服務(wù)端驗(yàn)證。

3.獲取要驗(yàn)證的內(nèi)容。

用戶觀看完激勵(lì)廣告時(shí),HUAWEI Ads服務(wù)端會(huì)把需要驗(yàn)證的參數(shù)以及KeyId和sign傳給媒體提供的URL: https://www.example.com/feedback(即步驟一中配置的驗(yàn)證URL)。請求體:

{

  adId : testx9dtjwj8hp,

  data : CUSTOMDATA,

  keyId : 12345678,

  rewardAmount : 10,

  rewardName : 金幣,

  sign : OA33u6mypnhE4hbmF32N/ibYi1uXt72nDDyYMwjDI6JXVVFKePZYo4F7Fuk2MaG......,

  uniqueId : 3361626337333932313435313430373438383561376265636130393939313166,

  userId : 1234567

}

服務(wù)器端驗(yàn)證回調(diào)查詢參數(shù)說明:

4.組裝驗(yàn)證參數(shù)。

驗(yàn)證內(nèi)容(除sign、keyId)格式順序如下:

adId={adId}data={data}rewardAmount={rewardAmount}rewardName={rewardName}uniqueId={uniqueId}userId={userId}

其中‘{}’里面表示參數(shù)的值,且參數(shù)順序不能變。假如參數(shù)為null或者空字符串,則url中不拼接該參數(shù),然后用sha256計(jì)算散列值,得到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(UTF8));

5.獲取公鑰列表。

1.在HUAWEI Ads 媒體服務(wù)平臺查看對應(yīng)的激勵(lì)視頻廣告位,點(diǎn)擊“獲取密鑰”按鈕獲取“開發(fā)者ID”和“密鑰”:

2. 通過如下接口獲得華為提供的公鑰列表:

接口URL:https://ppscrowddre.op.dbankcloud.com/actionlibtrack/publickeys

將body通過密鑰進(jìn)行HMACSHA256加密得到簽名,替換到Authorization中,并設(shè)置“開發(fā)者ID”和Authorization到Header中。

示例代碼如下:

String data = ;

String url = https://ppscrowddre.op.dbankcloud.com/actionlibtrack/publickeys;

String authorization = Digest validTime=\{0}\, response=\{1}\;

// 開發(fā)者ID

String userId = YOURPUBLISHERID;

// 密鑰

String key = YOURKEY;

  

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.UTF8);

  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  

    }  

  ]

}

返回消息結(jié)構(gòu)體:

Key結(jié)構(gòu)體:

6.執(zhí)行驗(yàn)證。

a.根據(jù)keyId從公鑰列表中找到對應(yīng)的base64編碼后的publicKey。

b.然后將paramContentData、publicKey和sign作為SHA256withRSA數(shù)字簽名算法的入?yún)?,?zhí)行驗(yàn)證。

示例代碼如下:

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(UTF8));

}


文章推薦
采購好的日本二手挖掘機(jī)如何進(jìn)口到中國,在日本買一臺二手挖掘機(jī)多少錢
App Annie是我們首選的移動(dòng)應(yīng)用數(shù)據(jù)參考站點(diǎn),appannie排行榜
德國大型二手?jǐn)?shù)控折彎機(jī)如何進(jìn)口中國報(bào)關(guān),進(jìn)口數(shù)控折彎機(jī)維修保養(yǎng)來電咨詢
AWS的全球基礎(chǔ)設(shè)施和網(wǎng)絡(luò),aws云全球服務(wù)基礎(chǔ)設(shè)施區(qū)域列表


特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。

搜索 放大鏡
韓國平臺交流群
加入
韓國平臺交流群
掃碼進(jìn)群
歐洲多平臺交流群
加入
歐洲多平臺交流群
掃碼進(jìn)群
美國賣家交流群
加入
美國賣家交流群
掃碼進(jìn)群
ESG跨境專屬福利分享群
加入
ESG跨境專屬福利分享群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進(jìn)群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
ESG獨(dú)家招商-PHH GROUP賣家交流群
加入
ESG獨(dú)家招商-PHH GROUP賣家交流群
掃碼進(jìn)群
《TikTok官方運(yùn)營干貨合集》
《TikTok綜合運(yùn)營手冊》
《TikTok短視頻運(yùn)營手冊》
《TikTok直播運(yùn)營手冊》
《TikTok全球趨勢報(bào)告》
《韓國節(jié)日營銷指南》
《開店大全-全球合集》
《開店大全-主流平臺篇》
《開店大全-東南亞篇》
《CD平臺自注冊指南》
通過ESG入駐平臺,您將解鎖
綠色通道,更高的入駐成功率
專業(yè)1v1客戶經(jīng)理服務(wù)
運(yùn)營實(shí)操指導(dǎo)
運(yùn)營提效資源福利
平臺官方專屬優(yōu)惠

立即登記,定期獲得更多資訊

訂閱
聯(lián)系顧問

平臺顧問

平臺顧問 平臺顧問

微信掃一掃
馬上聯(lián)系在線顧問

icon icon

小程序

微信小程序

ESG跨境小程序
手機(jī)入駐更便捷

icon icon

返回頂部

【免費(fèi)領(lǐng)取】全球跨境電商運(yùn)營干貨 關(guān)閉