Menu

Rewarded video

Import Rewarded Ad SDK:

java Copy
import 'package:secmtp_sdk/at_index.dart';
java Copy
import 'package:thinkup_sdk/at_index.dart';

1.1 Load Rewarded Video

If you need to issue rewards through the developer's server (some ad platforms support server-side rewards), you must pass the following parameters, which will be transparently transmitted to the developer's server after being passed in.

Key Type required Description
kATAdLoadingExtraUserIDKey String YES used to identify each user
kATAdLoadingExtraUserDataKeywordKey String NO user-defined parameters
java Copy
 _loadRewardedVideo() async {
    await ATRewardedManager.loadRewardedVideo(
        placementID: 'your placementId',
        extraMap: {
          ATRewardedManager.kATAdLoadingExtraUserDataKeywordKey(): '1234',
          ATRewardedManager.kATAdLoadingExtraUserIDKey(): '1234',
        });
  }

1.2 Check for Ad Cache and Get Ad Status

Use the following code to check if there is ad cache:

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

1.3 Enter Scene

java Copy
entryRewardedVideoScenario(String placementID, String sceneID) async {
    await ATRewardedManager.entryRewardedVideoScenario(
        placementID: 'your placementId',
        sceneID: 'your sceneID',
    );
  }

1.4 Show Rewarded Video

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

java Copy
 _showAd() async {
    await ATRewardedManager
        .showRewardedVideo(
      placementID: 'your placementId',
    );
  }

When using the scene function, display the ad through this API with parameters: Placement ID + Scene ID (Scene ID can be created via the TopOn backend)

java Copy
showSceneRewardedAd() async {
    await ATRewardedManager
        .showSceneRewardedVideo(
      sceneID: 'your sceneID',
      placementID: 'your placementId',
    );
  }

1.5 Implement Rewarded Video Listener

Introduction to ATRewardResponse Properties:

RewardedStatus: Rewarded video ad status

placementID: Ad placement ID

requestMessage: Request information (error information)

extraMap: Callback Information

isDeeplinkSuccess: Whether DeepLink is successful

Refer to the sample code below:

java Copy
_rewarderListen() {

    ATListenerManager.rewardedVideoEventHandler.listen((value) {

          switch (value.rewardStatus) {
              // Ad loading failed
            case RewardedStatus.rewardedVideoDidFailToLoad:
              print("flutter rewardedVideoDidFailToLoad ---- placementID: ${value.placementID} ---- errStr:${value.requestMessage}");
              break;
            // Ad loading succeeded  
            case RewardedStatus.rewardedVideoDidFinishLoading:
              print("flutter rewardedVideoDidFinishLoading ---- placementID: ${value.placementID}");
              break;
            // Ad started playing
            case RewardedStatus.rewardedVideoDidStartPlaying:
              print("flutter rewardedVideoDidStartPlaying ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
              break;
            // Ad finished playing  
            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 issued successfully, it is recommended to issue 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 triggered
            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;
            case RewardedStatus.rewardedVideoUnknown:
              print("flutter rewardedVideoUnknown");
              break;
          }
        });
 }
Previous
Splash ads
Next
Interstitials ads
Last modified: 2026-01-07Powered by