无论我做什么,都无法在 React 中显示 Google 广告
Can't get Google Ads to show in React no matter what I do
我一直在关注这个例子:
https://www.jamesbaum.co.uk/blether/using-google-adsense-with-react/
我有这个组件:
import React from "react";
export default class AdBanner extends React.Component {
componentDidMount () {
(window.adsbygoogle = window.adsbygoogle || []).push({});
}
render () {
return (
<div className='ad'>
<ins className='adsbygoogle'
style={{ display: 'block' }}
data-ad-client='div-gpt-ad-1536172937182-0'
data-ad-slot='/164808479/Leaderboard'
data-ad-format='auto' />
</div>
);
}
}
我有这个 index.html
:
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
当我 运行 我的测试页面时,我没有看到广告呈现和这个错误:
我不知道这个错误是什么意思,也不知道如何解决。
值得一提的是,客户端和插槽 ID 在非 React 测试应用程序中完美运行 所以这里一定有其他问题。
此外,我正在通过 localhost:8080 进行测试——它适用于非 React 测试应用程序,因此我认为这不是 localhost/google 广告问题。
在我们的旧非反应应用程序中
在我们的 <header>
:
<script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
<script>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
</script>
<script>
googletag.cmd.push(function() {
googletag.defineSlot('/164808479/Leaderboard', [728, 90], 'div-gpt-ad-1536172937182-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
在我们的 <page.php>
:
<!-- /164808479/Leaderboard -->
<div id='div-gpt-ad-1536172937182-0' style='height:90px; width:728px;'>
<script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1536172937182-0'); });
</script>
</div>
即使来自 127.0.0.1:80
(运行 宁通过 Docker),这现在也能产生一个有效的广告。我们的问题是我们缺乏在 React 组件中使其工作的能力。
You just need to wait, when you first implement Adsense it will give this error. It took until next morning for Adsense to start displaying ads. I implemented their Responsive ad type.
c/o
您收到 HTTP 400(即错误请求),因为发送到 google 广告服务器的数据似乎有误。
data-ad-client
值的格式应类似于 ca-pub-00000000000000
,这是从 adsense 管理页面获得的。 (我相信这不是你的情况!!!)
您提供的数据,div-gpt-ad
似乎是 div
for google 发布商标签的 ID,其 ID 为 /164808479/Leaderboard
。因此,为了在您的 React 应用程序中正确使用它,您可以使用此库:https://github.com/nfl/react-gpt
因此您可以在下面找到适合您的情况的修改后的代码。只需将 react-gpt
添加到您的 React 应用程序中即可。
import React from "react";
import {Bling as GPT} from "react-gpt";
GPT.enableSingleRequest();
export default class AdBanner extends React.Component {
render () {
return (
<div id="div-gpt-ad-1536172937182-0">
<GPT
adUnitPath="/164808479/Leaderboard"
slotSize={[728, 90]}
/>
</div>
);
}
}
你可以看到上面的代码在这个 link 中运行得很好:https://codesandbox.io/embed/determined-bash-k30nq
只为那些在字里行间阅读的人(就像我一样)- 将推送调用放到 useEffect 而不是 row jsx,例如:
useEffect(() => {
window.adsbygoogle = window.adsbygoogle || [];
window.adsbygoogle.push({});
}, [])
我一直在关注这个例子:
https://www.jamesbaum.co.uk/blether/using-google-adsense-with-react/
我有这个组件:
import React from "react";
export default class AdBanner extends React.Component {
componentDidMount () {
(window.adsbygoogle = window.adsbygoogle || []).push({});
}
render () {
return (
<div className='ad'>
<ins className='adsbygoogle'
style={{ display: 'block' }}
data-ad-client='div-gpt-ad-1536172937182-0'
data-ad-slot='/164808479/Leaderboard'
data-ad-format='auto' />
</div>
);
}
}
我有这个 index.html
:
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
当我 运行 我的测试页面时,我没有看到广告呈现和这个错误:
我不知道这个错误是什么意思,也不知道如何解决。
值得一提的是,客户端和插槽 ID 在非 React 测试应用程序中完美运行 所以这里一定有其他问题。
此外,我正在通过 localhost:8080 进行测试——它适用于非 React 测试应用程序,因此我认为这不是 localhost/google 广告问题。
在我们的旧非反应应用程序中
在我们的 <header>
:
<script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
<script>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
</script>
<script>
googletag.cmd.push(function() {
googletag.defineSlot('/164808479/Leaderboard', [728, 90], 'div-gpt-ad-1536172937182-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
在我们的 <page.php>
:
<!-- /164808479/Leaderboard -->
<div id='div-gpt-ad-1536172937182-0' style='height:90px; width:728px;'>
<script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1536172937182-0'); });
</script>
</div>
即使来自 127.0.0.1:80
(运行 宁通过 Docker),这现在也能产生一个有效的广告。我们的问题是我们缺乏在 React 组件中使其工作的能力。
You just need to wait, when you first implement Adsense it will give this error. It took until next morning for Adsense to start displaying ads. I implemented their Responsive ad type.
c/o
您收到 HTTP 400(即错误请求),因为发送到 google 广告服务器的数据似乎有误。
data-ad-client
值的格式应类似于 ca-pub-00000000000000
,这是从 adsense 管理页面获得的。 (我相信这不是你的情况!!!)
您提供的数据,div-gpt-ad
似乎是 div
for google 发布商标签的 ID,其 ID 为 /164808479/Leaderboard
。因此,为了在您的 React 应用程序中正确使用它,您可以使用此库:https://github.com/nfl/react-gpt
因此您可以在下面找到适合您的情况的修改后的代码。只需将 react-gpt
添加到您的 React 应用程序中即可。
import React from "react";
import {Bling as GPT} from "react-gpt";
GPT.enableSingleRequest();
export default class AdBanner extends React.Component {
render () {
return (
<div id="div-gpt-ad-1536172937182-0">
<GPT
adUnitPath="/164808479/Leaderboard"
slotSize={[728, 90]}
/>
</div>
);
}
}
你可以看到上面的代码在这个 link 中运行得很好:https://codesandbox.io/embed/determined-bash-k30nq
只为那些在字里行间阅读的人(就像我一样)- 将推送调用放到 useEffect 而不是 row jsx,例如:
useEffect(() => {
window.adsbygoogle = window.adsbygoogle || [];
window.adsbygoogle.push({});
}, [])