Admob не удалось загрузить с ошибкой "at nativeToJSError" - React Native - PullRequest
0 голосов
/ 01 марта 2019

Проблема

У меня есть приложения, работающие в настоящее время в версии продукта моего приложения, но по какой-то причине без внесения каких-либо изменений в мой код, я теперь получаю следующую ошибку при тестировании моего React Nativeна андроид.Я пробовал как в эмуляторе Android на моем компьютере, так и на устройстве Android, подключенном к моему компьютеру.

Он отлично работает для iOS и отлично работал для Android до сегодняшнего дня.

Я включил свои объявления несколько недель назад, так что это не проблема нехватки ресурсов, что показывалось бы в моем отладчике как нехватка ресурсов, если бы это было так

Если у кого-то есть предложения, которыебыло бы замечательно!Это мешает мне отправить важное обновление для моих пользователей.

Ошибка

result     at nativeToJSError (blob:http://localhost:8081/6fcdf141-5854-4a90-ba10-5e5c347584ab:105783:17)
    at AdMobComponent._this.onBannerEvent (blob:http://localhost:8081/6fcdf141-5854-4a90-ba10-5e5c347584ab:106684:64)
    at Object.invokeGuardedCallbackImpl (blob:http://localhost:8081/6fcdf141-5854-4a90-ba10-5e5c347584ab:7899:16)
    at invokeGuardedCallback (blob:http://localhost:8081/6fcdf141-5854-4a90-ba10-5e5c347584ab:7990:37)
    at invokeGuardedCallbackAndCatchFirstError (blob:http://localhost:8081/6fcdf141-5854-4a90-ba10-5e5c347584ab:7994:31)
    at executeDispatch (blob:http://localhost:8081/6fcdf141-5854-4a90-ba10-5e5c347584ab:8188:9)
    at executeDispatchesInOrder (blob:http://localhost:8081/6fcdf141-5854-4a90-ba10-5e5c347584ab:8208:11)
    at executeDispatchesAndRelease (blob:http://localhost:8081/6fcdf141-5854-4a90-ba10-5e5c347584ab:8303:11)
    at executeDispatchesAndReleaseTopLevel (blob:http://localhost:8081/6fcdf141-5854-4a90-ba10-5e5c347584ab:8312:16)
    at forEachAccumulated (blob:http://localhost:8081/6fcdf141-5854-4a90-ba10-5e5c347584ab:8295:14)

Аргументы возвращены по ошибке

Arguments [callee: ƒ, Symbol(Symbol.iterator): ƒ]
 callee: ƒ render()
  arguments: null
  caller: null
  length: 0
  name: "render"
  prototype: {constructor: ƒ}
  __proto__: ƒ ()
  [[FunctionLocation]]: Admob.js:33
  [[Scopes]]: Scopes[3]
  length: 0
 Symbol(Symbol.iterator): ƒ values()
  arguments: [Exception: TypeError: 'caller', 'callee', and  'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them at Function.invokeGetter (<anonymous>:2:14)]
  caller: [Exception: TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them at Function.invokeGetter (<anonymous>:2:14)]
  length: 0
  name: "values"
  __proto__: ƒ ()
  [[Scopes]]: Scopes[0]
  __proto__: Object

Код компонента Admob Код в точности такой, какой он есть в приложении собственного кода, единственное изменение, которое я сделал, - это удаление идентификаторов приложения и модуля.Я проверил, чтобы они были правильными.

  import React, {Component} from 'react';
    import {
    StyleSheet,
    View,
    Text,
    Dimensions,
  Image,
  TouchableWithoutFeedback
} from 'react-native';

import firebase from 'react-native-firebase';


const Analytics = firebase.analytics()
const Admob = firebase.admob()
const Banner = firebase.admob.Banner;
const AdRequest = firebase.admob.AdRequest;
const request = new AdRequest().addTestDevice()


export default class AdmobComponent extends React.Component{

  constructor(props){
    super(props);
    Admob.initialize('Removed for privacy')
    this.state = {};

  }
  onBannerPress() {
    console.log('add button butotn pushed')
    Analytics.logEvent('banner_click')

  }

  render(){
    return(
      <View>
        <TouchableWithoutFeedback
          style={styles.adMobTouch}
          onPress={() => this.onBannerPress()}

        >
          <Banner
            size={"SMART_BANNER"}
            unitId={'Removed for private'}
            request={request.build()}
            onAdLoaded={() => {
              console.log('Advert loaded');
            }}
            onAdFailedToLoad={(result) => {
              console.log('result', result)
              console.log('Ad failed to load', arguments)
            }}
          />
        </TouchableWithoutFeedback>
      </View>
    )
  }
}

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Для целей разработки unitId должно быть одним из предопределенных значений https://developers.google.com/admob/android/test-ads?hl=en-GB

  1. Баннер:
    • ca-app-pub-3940256099942544/6300978111
  2. Промежуточный:
    • ca-app-pub-3940256099942544/1033173712
  3. Промежуточный видеоролик:
    • ca-app-pub-3940256099942544/8691691433
  4. Видео с наградами:
    • ca-app-pub-3940256099942544/5224354917
  5. Встроенное расширенное:
    • ca-app-pub-3940256099942544/2247696110
  6. Встроенное расширенное видео:
    • ca-app-pub-3940256099942544/1044960115
0 голосов
/ 13 апреля 2019

У меня тоже была такая же ошибка, это на самом деле не ошибка, вам просто нужно сделать apk для выпуска продукта, когда будет так много хитов, чтобы восхититься от ваших пользователей, тогда admob начнет показывать настоящую рекламу, а вы покавсе еще видите эту ошибку в режиме разработки, но она будет нормально работать в производственном режиме вашего apk, просто сделайте релиз apk, и объявления начнутся через 24 часа, когда в вашем приложении слишком много запросов на рекламу! ..

Дополнительная информация ===> https://github.com/invertase/react-native-firebase/issues/2054

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...