AdMob使应用程序停留在onPause上

时间:2018-08-05 23:01:37

标签: android admob interstitial

我在我的应用中使用AdMob插页式广告。如果我遵循以下步骤:

  • 显示非页内广告
  • 用户点击广告,将其重定向到我的应用外部(例如,重定向到Google Play)
  • 用户选择“返回”按钮以返回广告
  • 用户单击“ x”按钮以关闭广告

用户返回黑屏我的应用程序。经过一些故障排除后,我发现我的应用程序响应的最后一个事件是onPause。随后不会调用onResume。因此,我的应用程序不知道如何重新加载资产并继续游戏。

作为一种解决方法,我将以下代码放在onAdLeftApplication()中:

<?php
$servername = "";
$username = "";
$password = "";
$dbname = "";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $firstname = input_checker($_POST["firstname"]);
        $lastname = input_checker($_POST["lastname"]);
        $email = input_checker($_POST["email"]);   

        foreach ($row as $rows) {
            // prepare sql and bind parameters
            $stmt = $conn->prepare("INSERT INTO memo (firstname, lastname, email) 
            VALUES (:firstname, :lastname, :email)");
            $stmt->bindParam(':firstname', $rows);
            $stmt->bindParam(':lastname', $rows);
            $stmt->bindParam(':email', $rows);
            $stmt->execute();

            echo "New records created successfully";
        }
    }
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;

function input_checker($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
?>

这样,如果用户立即关闭广告,他将立即返回游戏,但如果他决定点击广告,则我的游戏将关闭,因此他必须重新启动-看上去不漂亮,但比冻结效果更好。

有人可以推荐一种更好的方法来解决此问题吗?在onAdLeftApplication中,我应该做些不同的事情来确保我的代码在广告关闭后收到onResume消息吗?我还应该听其他事件吗?

一个脚注,我已经向该应用程序添加了Firebase,虽然不确定这到底意味着什么,但是它应该做的很棒,在这种情况下,我没有看到有关如何响应admob插页式广告的任何其他说明。 / p>

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试此操作可能会对您有所帮助。

public void loadInterstitial() {
        // Instantiate an InterstitialAd object
        AdSettings.addTestDevice("350cf676a5848059b96313bdddc21a35");
        interstitialAd = new InterstitialAd(MainActivity.this,"222591425151579_222592145151XXX");
        interstitialAd.loadAd();
        // Set listeners for the Interstitial Ad
        interstitialAd.setAdListener(new InterstitialAdListener() {
            @Override
            public void onInterstitialDisplayed(Ad ad) {
                Log.v("OkHttp", ad.toString());
            }

            @Override
            public void onInterstitialDismissed(Ad ad) {
                Log.v("OkHttp", ad.toString());    
            }

            @Override
            public void onError(Ad ad, AdError adError) {
                Log.v("OkHttp", ad.toString() + "   " + adError.getErrorCode() + "   " + adError.getErrorMessage());
            }

            @Override
            public void onAdLoaded(Ad ad) {
                Log.v("OkHttp", ad.toString());
                showInterstitial();
            }

            @Override
            public void onAdClicked(Ad ad) {
                Log.v("OkHttp", ad.toString());
            }

            @Override
            public void onLoggingImpression(Ad ad) {
                Log.v("OkHttp", ad.toString());
            }
        });
    }

    public void showInterstitial() {
        interstitialAd.show();
    }

现在,在单击dismiss或AdLoaded之后,执行下一步要继续游戏的代码,您将获得所有事件的侦听器,并且可以为每个事件设置不同的情况。