Tải một quảng cáo có tặng thưởng

Quảng cáo có tặng thưởng cho phép bạn tặng thưởng cho người dùng bằng các mặt hàng trong ứng dụng khi họ tương tác với quảng cáo dạng video, quảng cáo có thể chơi và bản khảo sát.

Hướng dẫn này trình bày cách tích hợp quảng cáo có tặng thưởng vào ứng dụng Android.

Trước khi bắt đầu

Trước khi tiếp tục, hãy làm như sau:

  • Thiết lập GMA Next-Gen SDK.
  • Sử dụng mã đơn vị quảng cáo có tặng thưởng thử nghiệm ca-app-pub-3940256099942544/5224354917.
    • Khi bạn tạo và thử nghiệm ứng dụng, hãy nhớ sử dụng quảng cáo thử nghiệm thay vì quảng cáo sản phẩm đang chạy trong thực tế. Nếu bạn không sử dụng mã đơn vị quảng cáo thử nghiệm, Google có thể tạm ngưng tài khoản của bạn.
    • Trước khi xuất bản ứng dụng, hãy thay thế mã này bằng mã đơn vị quảng cáo của bạn.
    • Để biết thông tin chi tiết về quảng cáo thử nghiệm GMA Next-Gen SDK, hãy xem bài viết Bật quảng cáo thử nghiệm.

Tải một quảng cáo

Ví dụ sau đây tải một quảng cáo:

Kotlin

// Load ads after you initialize MobileAds.
RewardedAd.load(
  AdRequest.Builder(adUnitId).build(),
  object : AdLoadCallback<RewardedAd> {
    override fun onAdLoaded(ad: RewardedAd) {
      // Rewarded ad loaded.
      rewardedAd = ad
    }

    override fun onAdFailedToLoad(adError: LoadAdError) {
      // Rewarded ad failed to load.
      Log.e(TAG, "Rewarded ad failed to load: ${adError.message}")
      rewardedAd = null
    }
  },
)

Java

// Load ads after you initialize MobileAds.
RewardedAd.load(
    new AdRequest.Builder(adUnitId).build(),
    new AdLoadCallback<RewardedAd>() {
      @Override
      public void onAdLoaded(@NonNull RewardedAd ad) {
        // Rewarded ad loaded.
        rewardedAd = ad;
      }

      @Override
      public void onAdFailedToLoad(@NonNull LoadAdError adError) {
        // Rewarded ad failed to load.
        Log.e(TAG, "Rewarded ad failed to load: " + adError.getMessage());
        rewardedAd = null;
      }
    });

Khi thử nghiệm, hãy sử dụng mã đơn vị quảng cáo thử nghiệm: ca-app-pub-3940256099942544/5224354917.

Hiển thị quảng cáo

Để hiển thị quảng cáo có tặng thưởng, hãy gọi phương thức show. Để xử lý các sự kiện có tặng thưởng, hãy sử dụng đối tượng OnUserEarnedRewardListener.

Ví dụ sau đây cho thấy quảng cáo:

Kotlin

private fun showAd(rewardedAd: RewardedAd, activity: Activity) {
  // Show the ad.
  rewardedAd.show(
    activity,
    object : OnUserEarnedRewardListener {
      override fun onUserEarnedReward(rewardItem: RewardItem) {
        // User earned the reward.
        val rewardAmount = rewardItem.amount
        val rewardType = rewardItem.type
      }
    },
  )
}

Java

private void showAd(RewardedAd rewardedAd, Activity activity) {
  // Show the ad.
  rewardedAd.show(
      activity,
      new OnUserEarnedRewardListener() {
        @Override
        public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
          // User earned the reward.
          int rewardAmount = rewardItem.getAmount();
          String rewardType = rewardItem.getType();
        }
      });
}

Theo dõi các sự kiện quảng cáo

Trước khi hiển thị quảng cáo, hãy theo dõi các sự kiện trong vòng đời của quảng cáo. Ví dụ sau đây đăng ký lệnh gọi lại cho các sự kiện quảng cáo:

Kotlin

private fun listenToAdEvents() {
  // Listen for ad events.
  val ad = rewardedAd
  if (ad == null) {
    Log.e(TAG, "Rewarded ad is not ready yet.")
    return
  }

  ad.adEventCallback =
    object : RewardedAdEventCallback {
      override fun onAdShowedFullScreenContent() {
        // Rewarded ad did show.
      }

      override fun onAdDismissedFullScreenContent() {
        // Rewarded ad did dismiss.
        rewardedAd = null
      }

      override fun onAdFailedToShowFullScreenContent(
        fullScreenContentError: FullScreenContentError
      ) {
        // Rewarded ad failed to show.
        Log.e(TAG, "Rewarded ad failed to show: ${fullScreenContentError.message}")
      }

      override fun onAdImpression() {
        // Rewarded ad did record an impression.
      }

      override fun onAdClicked() {
        // Rewarded ad did record a click.
      }
    }
}

Java

private void listenToAdEvents() {
  // Listen for ad events.
  if (rewardedAd == null) {
    Log.e(TAG, "Rewarded ad is not ready yet.");
    return;
  }

  rewardedAd.setAdEventCallback(
      new RewardedAdEventCallback() {
        @Override
        public void onAdShowedFullScreenContent() {
          // Rewarded ad did show.
        }

        @Override
        public void onAdDismissedFullScreenContent() {
          // Rewarded ad did dismiss.
          rewardedAd = null;
        }

        @Override
        public void onAdFailedToShowFullScreenContent(
            FullScreenContentError fullScreenContentError) {
          // Rewarded ad failed to show.
          Log.e(TAG, "Rewarded ad failed to show: " + fullScreenContentError.getMessage());
        }

        @Override
        public void onAdImpression() {
          // Rewarded ad did record an impression.
        }

        @Override
        public void onAdClicked() {
          // Rewarded ad did record a click.
        }
      });
}

Không bắt buộc: Xác thực lệnh gọi lại của tính năng xác minh phía máy chủ (SSV)

Để truyền bối cảnh người dùng và ứng dụng trong lệnh gọi lại của tính năng xác minh phía máy chủ (SSV), hãy đặt các tuỳ chọn xác minh trên đối tượng quảng cáo trước khi hiển thị quảng cáo. Vì lệnh gọi lại SSV đến máy chủ của bạn từ Google mà không có trạng thái phiên, hãy đính kèm các chuỗi không bắt buộc sau đây. Google sẽ chuyển tiếp các chuỗi này mà không thay đổi dưới dạng tham số truy vấn đã ký trong lệnh gọi lại SSV:

  • Tham số truy vấn user_id: Xác định người dùng được ghi nhận, chẳng hạn như mã tài khoản nội bộ.
  • Tham số truy vấn custom_data: Chứa dữ liệu ứng dụng, chẳng hạn như vị trí đặt phần thưởng, cấp độ trò chơi hoặc số chỉ dùng một lần do máy chủ tạo.

Nếu bạn không đặt giá trị, Google sẽ bỏ qua tham số truy vấn đó trong lệnh gọi lại SSV.

Ví dụ sau đây đặt dữ liệu tuỳ chỉnh cho một đối tượng quảng cáo trước khi hiển thị quảng cáo:

Kotlin

RewardedAd.load(
  context,
  AD_UNIT_ID,
  AdRequest.Builder().build(),
  object : RewardedAdLoadCallback() {
    override fun onAdLoaded(ad: RewardedAd) {
      rewardedAd = ad
      val options =
        ServerSideVerificationOptions.Builder().setCustomData("SAMPLE_CUSTOM_DATA_STRING").build()
      rewardedAd?.setServerSideVerificationOptions(options)
    }
  },
)

Java

RewardedAd.load(
    context,
    AD_UNIT_ID,
    new AdRequest.Builder().build(),
    new RewardedAdLoadCallback() {
      @Override
      public void onAdLoaded(RewardedAd ad) {
        rewardedAd = ad;
        ServerSideVerificationOptions options =
            new ServerSideVerificationOptions.Builder()
                .setCustomData("SAMPLE_CUSTOM_DATA_STRING")
                .build();
        rewardedAd.setServerSideVerificationOptions(options);
      }
    });

Thay thế SAMPLE_CUSTOM_DATA_STRING bằng dữ liệu tuỳ chỉnh của bạn.

Lưu ý quan trọng: Tham số truy vấn custom_data được mã hoá theo phần trăm. Trước khi phân tích cú pháp giá trị, hãy giải mã URL của chuỗi trên máy chủ và xác minh chữ ký gọi lại trước khi tin tưởng các tham số truy vấn user_id hoặc custom_data.