这个错误通常出现在多次调用AdMobInterstitial.loadAd()时。因此,我们需要在加载新广告之前检查前一个广告是否已加载,以避免出现这种错误。以下是一个示例:
import { AdMobInterstitial } from 'expo-ads-admob';
import { useEffect, useState } from 'react';
const Ad = () => {
const [isAdLoaded, setIsAdLoaded] = useState(false);
useEffect(() => {
const loadInterstitialAd = async () => {
if (!isAdLoaded) {
await AdMobInterstitial.setAdUnitID('your-ad-unit-id');
await AdMobInterstitial.requestAdAsync();
setIsAdLoaded(true);
}
};
loadInterstitialAd();
}, [isAdLoaded]);
const handleShowAd = async () => {
if (isAdLoaded) {
await AdMobInterstitial.showAdAsync();
setIsAdLoaded(false);
}
};
return (
);
};
export default Ad;
在此示例中,我们使用了useState钩子来跟踪广告在应用中的加载状态。我们在useEffect中异步地请求AdMobInterstitial和设置广告单元ID。我们检查isAdLoaded的值来确定上一个广告是否已加载。如果尚未加载,则使用await关键字异步地请求。
我们还使用了一个按钮来显示广告。当按钮被点击并且isAdLoaded为true时,我们使用await关键字显示广告,并将isAdLoaded设置为false,以便我们可以加载下一个广告。
这种方法可以避免出现多次加载同一广告的错误,因为我们使用isAdLoaded状态检查广告是否已加载。