React Native Admob 不工作-显示未找到 RNGADBannerView

React Native Admob not working-It is showing RNGADBannerView was not found

import React, { Component } from "react";
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  FlatList,
  AsyncStorage,
  Button,
  TextInput,
  Keyboard,
  Platform
} from "react-native";
import {AdMobBanner} from 'react-native-admob';
const isAndroid = Platform.OS == "android";
const viewPadding = 10;

export default class TodoList extends Component {
  state = {
    tasks: [],
    text: "",
    
  };
  
 // componentDidMount(){
   // this.renderAdd() }
renderAdd(){
    
        return(
            <View style={{flex:1}}>
                <AdMobBanner
                adSize="banner"
                adUnitID="app-id"
                testDeviceID="EMULATOR"
                didFailToReceiveAdWithError={this.bannerError} />
            </View>
        );
  
}


  changeTextHandler = text => {
    this.setState({ text: text });
  };

  addTask = () => {
    let notEmpty = this.state.text.trim().length > 0;

    if (notEmpty) {
      this.setState(
        prevState => {
          let { tasks, text } = prevState;
          return {
            tasks: tasks.concat({ key: tasks.length, text: text }),
            text: ""
          };
        },
        () => Tasks.save(this.state.tasks)
      );
    }
  };

  deleteTask = i => {
    this.setState(
      prevState => {
        let tasks = prevState.tasks.slice();

        tasks.splice(i, 1);

        return { tasks: tasks };
      },
      () => Tasks.save(this.state.tasks)
    );
  };

  componentDidMount() {
    Keyboard.addListener(
      isAndroid ? "keyboardDidShow" : "keyboardWillShow",
      e => this.setState({ viewMargin: e.endCoordinates.height + viewPadding })
    );

    Keyboard.addListener(
      isAndroid ? "keyboardDidHide" : "keyboardWillHide",
      () => this.setState({ viewMargin: viewPadding })
    );

    Tasks.all(tasks => this.setState({ tasks: tasks || [] }));
  }

  render() {
    return (
     
      <View
        style={[styles.container, { paddingBottom: this.state.viewMargin }, {backgroundColor: "#b8b811"}]}
      >
        <AdMobBanner
                adSize="banner"
                adUnitID="ca-app-pub-6268407821278608~9156268355"
                testDeviceID="EMULATOR"
                didFailToReceiveAdWithError={this.bannerError} />
     <Text style={{backgroundColor: "yellow"}}> To-do-list </Text>
      
        <FlatList
          style={styles.list}
          data={this.state.tasks}
          renderItem={({ item, index }) =>
            <View>
              <View style={styles.listItemCont}>
                <Text style={styles.listItem}>
                  {item.text}
                </Text>
                <Button title="Done" onPress={() => this.deleteTask(index)} />
              </View>
              <View style={styles.hr} />
            </View>}
        />
        <TextInput
          style={styles.textInput}
          onChangeText={this.changeTextHandler}
          onSubmitEditing={this.addTask}
          value={this.state.text}
          placeholder="Add Tasks"
          returnKeyType="done"
          returnKeyLabel="done"
        />
      </View>
      
    );
  }
}

let Tasks = {
  convertToArrayOfObject(tasks, callback) {
    return callback(
      tasks ? tasks.split("||").map((task, i) => ({ key: i, text: task })) : []
    );
  },
  convertToStringWithSeparators(tasks) {
    return tasks.map(task => task.text).join("||");
  },
  all(callback) {
    return AsyncStorage.getItem("TASKS", (err, tasks) =>
      this.convertToArrayOfObject(tasks, callback)
    );
  },
  save(tasks) {
    AsyncStorage.setItem("TASKS", this.convertToStringWithSeparators(tasks));
  }
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
    backgroundColor: "#F5FCFF",
    padding: viewPadding,
    paddingTop: 20
  },
  list: {
    width: "100%"
  },
  listItem: {
    paddingTop: 2,
    paddingBottom: 2,
    fontSize: 18
  },
  hr: {
    height: 1,
    backgroundColor: "gray"
  },
  listItemCont: {
    flexDirection: "row",
    alignItems: "center",
    justifyContent: "space-between"
  },
  textInput: {
    height: 40,
    paddingRight: 10,
    paddingLeft: 10,
    borderColor: "gray",
    
    width: "100%"
  }
});

AppRegistry.registerComponent("TodoList", () => TodoList);

这是我的代码。我通过使用 react-native-admob 收到以下错误。它的版本是 ^2.0.0-beta.6。我收到一条错误消息,指出未找到 RNGADBannerVIew。请帮助解决这个错误。我什至尝试过 expo update 但没有用。预先感谢您的帮助。 https://i.stack.imgur.com/zGiJq.png

Expo 不允许您安装需要本机代码的外部库,而这个库可以。不过,似乎有一个 Expo 为 Admob 提供的软件包,您可以查看文档 here

实际上我正在尝试使用 react-native admob 但是我应该使用 expo admob 因为我的应用程序是在 expo 而不是 react-native