Menu

Rewarded video

Importing the Rewarded Ad SDK:

swift Copy
import 'package:anythink_sdk/at_index.dart';

1.1 Load Rewarded Video

If you need to distribute rewards through the developer's server (some ad platforms support server-side rewards), you need to pass the following parameters. Once passed, they will be forwarded through to the developer's server.

kATAdLoadingExtraUserIDKey(): String, required, used to identify each user,

kATAdLoadingExtraUserDataKeywordKey(): String, optional, user-defined parameters.

swift Copy
 _loadRewardedVideo() async {
        ATRewardedManager.loadRewardedVideo(
        placementID: 'you placementId',
        extraMap: {
          ATRewardedManager.kATAdLoadingExtraUserDataKeywordKey(): '1234',
          ATRewardedManager.kATAdLoadingExtraUserIDKey(): '1234',
        });
  }

1.2 Check if There Is a Cached Ad and Get Ad Status

Use the following code to check if there is a cached ad:

swift Copy
 _hasAdReady() async {
    await ATRewardedManager
        .rewardedVideoReady(
      placementID: 'you placementId',
    ).then((value) {
      print('Ad video cache $value');
    });
  }

Use the following code to get the ad status (return value type is Map). The key-value pairs are as follows:

  1. isLoading: Whether it is loading

  2. isReady: Whether there is a cached ad

  3. adInfo: The highest-priority cached ad info

swift Copy
 _checkAdStatus() async {
    await ATRewardedManager
        .checkRewardedVideoLoadStatus(
      placementID: 'you placementId',
    ).then((value) {
      print('Ad video status $value');
    });
  }  

Get information about all available ads under the current ad placement

swift Copy
getRewardedVideoValidAds() async {
    await ATRewardedManager.getRewardedVideoValidAds(
      placementID: Configuration.rewarderPlacementID,)
        .then((value) {
      print('Rewarded video under current ad placement $value');
    });
  }

1.3 Enter Scenario

swift Copy
entryRewardedVideoScenario(String placementID, String sceneID) async {
       ATRewardedManager.entryRewardedVideoScenario(
        placementID: 'you placementId',
        sceneID: 'you sceneID',
    );
  }

1.4 Display Rewarded Video

To display a rewarded video, simply call the show API and pass the ad placement ID.

swift Copy
 _showAd() async {
        ATRewardedManager
        .showRewardedVideo(
      placementID: 'you placementId',
    );
  } 

When using the scenario feature, display the ad through this API. Parameters: Ad Placement ID + Scenario ID (the Scenario ID can be created in the Taku dashboard)

swift Copy
showSceneRewardedAd() async {
         ATRewardedManager
        .showSceneRewardedVideo(
      sceneID: 'you sceneID',
      placementID: 'you placementId',
    );
  }

1.5 Implement Rewarded Video Listeners

ATRewardResponse property description:

RewardedStatus: Rewarded video status

placementID: placementID

requestMessage: Request info (error message)

extraMap: Callback Info

isDeeplinkSuccess: isDeeplinkSuccess

See the sample code below:

swift Copy
_rewarderListen() {

    ATListenerManager.rewardedVideoEventHandler.listen((value) {

          switch (value.rewardStatus) {
              // Ad load failed
            case RewardedStatus.rewardedVideoDidFailToLoad:
              print("flutter rewardedVideoDidFailToLoad ---- placementID: ${value.placementID} ---- errStr:${value.requestMessage}");
              break;
            // Ad loaded successfully  
            case RewardedStatus.rewardedVideoDidFinishLoading:
              print("flutter rewardedVideoDidFinishLoading ---- placementID: ${value.placementID}");
              break;
            // Ad playback started
            case RewardedStatus.rewardedVideoDidStartPlaying:
              print("flutter rewardedVideoDidStartPlaying ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
              break;
            // Ad playback ended  
            case RewardedStatus.rewardedVideoDidEndPlaying:
              print("flutter rewardedVideoDidEndPlaying ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
              break;
            // Ad playback failed  
            case RewardedStatus.rewardedVideoDidFailToPlay:
              print("flutter rewardedVideoDidFailToPlay ---- placementID: ${value.placementID} ---- errStr:${value.extraMap}");
              break;
            // Reward granted. It is recommended to distribute rewards in this callback  
            case RewardedStatus.rewardedVideoDidRewardSuccess:
              print("flutter rewardedVideoDidRewardSuccess ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
              break;
            // Ad clicked  
            case RewardedStatus.rewardedVideoDidClick:
              print("flutter rewardedVideoDidClick ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
              break;
            // Deeplink  
            case RewardedStatus.rewardedVideoDidDeepLink:
              print("flutter rewardedVideoDidDeepLink ---- placementID: ${value.placementID} ---- extra:${value.extraMap} ---- isDeeplinkSuccess:${value.isDeeplinkSuccess}");
              break;
            // Ad closed  
            case RewardedStatus.rewardedVideoDidClose:
              print("flutter rewardedVideoDidClose ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
              break;

            // Ad playback started (only for Pangle Watch Another Ad)  
            case RewardedStatus.rewardedVideoDidAgainStartPlaying:
                print("flutter rewardedVideoDidAgainStartPlaying ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
              break;
            // Ad playback ended (only for Pangle Watch Another Ad)  
            case RewardedStatus.rewardedVideoDidAgainEndPlaying:
                print("flutter rewardedVideoDidAgainEndPlaying ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
                break;
            // Ad playback failed (only for Pangle Watch Another Ad)  
            case RewardedStatus.rewardedVideoDidAgainFailToPlay:
                print("flutter rewardedVideoDidAgainFailToPlay ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
                break;
            // Reward granted (only for Pangle Watch Another Ad)  
            case RewardedStatus.rewardedVideoDidAgainRewardSuccess:
                print("flutter rewardedVideoDidAgainRewardSuccess ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
                break;
            // Ad clicked (only for Pangle Watch Another Ad)  
            case RewardedStatus.rewardedVideoDidAgainClick:
                print("flutter rewardedVideoDidAgainClick ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");

            case RewardedStatus.rewardedVideoUnknown:
              print("flutter rewardedVideoUnknown");
              break;
          }
        });
 }
Previous
Splash ads
Next
Interstitials ads
Last modified: 2026-07-01Powered by