【问题标题】:java.lang.String - facebook adjava.lang.String - 脸书广告
【发布时间】:2019-07-04 13:18:00
【问题描述】:

我正在使用 Facebook 广告。我想将原生广告放到我的 react native expo 应用程序中,但出现错误。当我放置简单的横幅时,一切正常。它给了我这个错误: 未捕获的错误:java.lang.String 无法转换为 java.lang.Double 我试图像这样导入: 从“expo-ads-facebook”导入 * 作为 FacebookAds; 但它给了我这个错误: 无法从“node_modules/expo-ads-facebook/build/withNativeAd.js”解析“@unimodules/core”

我做错了什么?

// pageScreen.js
import React from 'react';

import { FacebookAds } from 'expo'

import AdScreenFacebook from './AdScreenFacebook'

class AdScreen extends React.Component {
  render () {
          return (

             <AdScreenFacebook adsManager={adsManager} adChoicePosition="topLeft" expandable={false} />

          );
      }

 }

// AdScreenFacebook.js

import React from 'react';

import { FacebookAds } from 'expo'
const { AdIconView, AdMediaView } = FacebookAds;

const adsManager = new FacebookAds.NativeAdsManager("2272791379702600_2272795453035526", "1");

class AdScreenFacebook extends React.Component {
  render () {
          return (
      <View>
        <AdMediaView />
        <AdTriggerView>
          <Text>{this.props.nativeAd.bodyText}</Text>
        </AdTriggerView>
      </View>
    );
      }

 }


export default FacebookAds.withNativeAd(AdScreenFacebook);







  export default createStackNavigator(
    {
      Main: {
        screen: AdScreen,
      },
      AdScreenFacebook: {
        screen: AdScreenFacebook,
      }
    },
    {
      initialRouteName: 'Main',
    }
  );

【问题讨论】:

    标签: react-native expo facebook-ads-api


    【解决方案1】:

    删除 NativeAdsManager 函数中数字 1 的引号。您当前将数字 1 作为字符串而不是数字传递给该函数。

    // AdScreenFacebook.js
    
    const adsManager = new FacebookAds.NativeAdsManager("2272791379702600_2272795453035526", 1); 
    

    【讨论】:

      【解决方案2】:

      使用 SDK 33,我们将弃用从 expo package 导入的大多数模块。这意味着在未来的版本中,您将无法编写,例如,import { FacebookAds } from 'expo';。相反,您需要为您使用的每个模块安装单独的包并从中导入。

      您可以使用新的expo install 命令安装模块;此命令是npm install/yarn add 的包装器,它会自动安装与您的 SDK 版本兼容的模块版本。例如,对于 FacebookAds module,您将运行 expo install expo-ads-facebook,然后使用 import * as FacebookAds from 'expo-ads-facebook';。这一变化为 tree-shaking 和更小的 JavaScript bundles 铺平了道路。它还简化了在托管工作流和裸工作流之间的移动。

      如果您想使用 Expo 模块,例如问题,install it 并进行设置。

      对于managed 应用程序,您需要运行expo install expo-ads-facebook。要在 bare React Native 应用程序中使用它,请关注其 installation instructions

      用法

      import * as FacebookAds from 'expo-ads-facebook';
      const { AdTriggerView, AdMediaView } = FacebookAds;
      
      class AdComponent extends React.Component {
        render() {
          return (
            <View>
              <AdMediaView />
              <AdTriggerView>
                <Text>{this.props.nativeAd.bodyText}</Text>
              </AdTriggerView>
            </View>
          );
        }
      }
      
      export default FacebookAds.withNativeAd(AdComponent);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-16
        • 2016-06-09
        • 2012-07-05
        • 1970-01-01
        • 2014-07-05
        • 2015-08-22
        • 2011-11-07
        • 2012-06-04
        相关资源
        最近更新 更多