@react原生火力基地/admob 的基本用法给出:"TypeError: (0, _admob.default) is not a function" .它是否已弃用?或者为什么不起作用?



是否反对使用@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文件。它不起作用,但我设法用另一种方式运行它:

  1. 关闭所有正在运行的react本地相关终端。卸载@react native firebase/app。

    npm卸载@react原生firebase/app

  2. 使用此命令直接安装@react native firebase/app 11.5.0版本。

    npm install@react原生firebase/app@11.5.0

  3. 安装完成后,转到package.json>依赖项,并使两个包的版本相同(11.5.0(并删除^

    "react native firebase/admob":"11.5.0〃;,

    "react native firebase/app":"11.5.0〃;,

  4. 用新鲜的缓存启动react native,然后运行android。

    npx react本机启动-重置缓存

    npx react原生运行android

最新更新