是否反对使用@react native firebase/admob?或者只是。。为什么它不起作用?
我正在使用@react native firebase/admob(https://rnfb-docs.netlify.app/admob/usage)。在使用";admob(("。当我将admob((添加到代码中时,出现以下错误:
"TypeError:(0,_admob.default(不是函数";
有人知道为什么吗?
我的代码如下(基本用法(:
import React from 'react';
import { Text, View} from 'react-native';
import admob, { MaxAdContentRating } from '@react-native-firebase/admob';
import { InterstitialAd, RewardedAd, BannerAd, TestIds } from '@react-native-
firebase/admob';
import { BannerAdSize} from '@react-native-firebase/admob';
class App extends React.Component{
componentDidMount(){
// this was taked of official page: https://rnfb-docs.netlify.app/admob/usage#installation
admob()
.setRequestConfiguration({
// Update all future requests suitable for parental guidance
maxAdContentRating: MaxAdContentRating.PG,
// Indicates that you want your content treated as child-directed for purposes of COPPA.
tagForChildDirectedTreatment: true,
// Indicates that you want the ad request to be handled in a
// manner suitable for users under the age of consent.
tagForUnderAgeOfConsent: true,
})
.then(() => {
// Request config successfully set!
});
}
render(){
return(
<View style={{
alignItems:"center",
justifyContent:"center",
height:"100%"}}>
<Text style={{color:"black"}}>
Hola
</Text>
<BannerAd
unitId={TestIds.BANNER}
size={BannerAdSize.FULL_BANNER} />
</View>
)
}
}
export default App;
尽管@CodeJoe Answer,我仍然对React Native Firebase的不同文档感到困惑,因此我花了很多时间和精力来绕过它。
我在这里打开了一个问题,确认谷歌从v11.5.0
开始删除了AdMob包。
AdMob已不在Firebase API中,因此此模块不再包装它,也没有文档需要更正。然而,它确实在v11.5.0之前就已经存在了,如果你当时浏览了存储库,你可能会认为当时AdMob的e2e测试是";如何使用AdMob";https://github.com/invertase/react-native-firebase/tree/0217bff5cbbf233d7915efb4dbbdfe00e82dff23/packages/admob/e2e
请不要像我一样,查看正确的文档和网站:
正确
https://rnfirebase.io
错误错误错误,这指的是一个古老的真理
https://rnfb-docs.netlify.app
互联网的内存很长,所以有一些过时的文档副本,但rnfirebase.io始终是官方和当前的文档网站
Admob已被谷歌从firebase生态系统中完全删除,因此它在这里不存在。有一些社区软件包,我们的v11.5版本也有它,我们希望剥离我们的实现并为社区更新它,但这需要时间,不幸的是,我们在官方firebase api上仍有积压,因此尚未实现
因此,对于AdMob解决方案,我将使用另一个库,并为他们目前提供的解决方案使用react native firebase
另类图书馆(2021年8月(
免责声明
- React Native Firebase仍然是他们提供的其他软件包(Firebase、Analytics…(的一个很好的库,Admob 11.5版仍然是一个解决方案。这些只是对Admob的替代方案的建议
- react native admob alpha简单而新鲜的库,最近更新
- react native admob native ads另一个全新的库,他们实现了admob native Advanced ads
- Expo AdMob(也可用于裸React本地项目(
要完成搜索,我将添加Admob已从React Native Firebase中删除,并且没有计划再次实现它。仅在外部存储库上重新承载代码。最后支持的版本是11.5.0
这意味着,如果您想在重新托管之前使用RN Firebase Admob,则需要使用此版本的所有其他服务(如RNF分析(。
有关更多信息,请查看https://github.com/invertase/react-native-firebase/issues/5329#issuecomment-843272057
记住使用
dependencies{
"@react-native-firebase/admob": "11.5.0",
"@react-native-firebase/app": "11.5.0",
}
而不是
dependencies{
"@react-native-firebase/admob": "^11.5.0",
"@react-native-firebase/app": "^11.5.0",
}```
我可以解决它。
已解决
只需签入文件";package.json";firebase的包有相同的版本,例如:
dependencies{
"@react-native-firebase/admob": "^11.5.0",
"@react-native-firebase/app": "^11.5.0"
}
TIP
适用于类似的错误。
我可以在react native 0.65.1中为我的RewardedAD使用11.5.0降级技巧。我如上所述编辑了package.json文件。它不起作用,但我设法用另一种方式运行它:
-
关闭所有正在运行的react本地相关终端。卸载@react native firebase/app。
npm卸载@react原生firebase/app
-
使用此命令直接安装@react native firebase/app 11.5.0版本。
npm install@react原生firebase/app@11.5.0
-
安装完成后,转到package.json>依赖项,并使两个包的版本相同(
11.5.0
(并删除^
。"react native firebase/admob":"11.5.0〃;,
"react native firebase/app":"11.5.0〃;,
-
用新鲜的缓存启动react native,然后运行android。
npx react本机启动-重置缓存
npx react原生运行android