如何使用React Native为IOS正确安装Facebook Ads

时间:2019-01-09 19:41:33

标签: javascript facebook react-native facebook-javascript-sdk facebook-ads-api

当尝试通过IOS启动我的应用程序时,我在React Native中收到警告:

“模块AdChoiceManager需要主队列设置 因为它会覆盖“ init”但不会实现 'requiresMainQueueSetup'。在将来的版本中 除非明确选择退出,否则React Native将默认在后台线程上初始化所有本机模块。“

在我的podfile中,我有这些

pod 'react-native-fbsdk', :path => '../node_modules/react-native-fbsdk'
pod 'FBAudienceNetwork', '~> 5.1.0'

我得到了错误:

[!] /bin/bash -c 
set -e
npm install --production

/bin/bash: line 2: npm: command not found

所以我尝试了这个:

  pod 'FBAudienceNetwork', '~> 5.1.0' 
  pod 'FacebookSDK'
  pod 'FBSDKShareKit'
  pod 'FBSDKLoginKit'

一切都安装了,但我仍然收到警告。它可以在Android上正常运行,我只是不确定如何在不向iOS发出警告的情况下使Facebook Ads正常运行。

我的问题是,如何解决此问题/警告?我已经尝试了好几天才能将其从屏幕上删除,但无济于事。

1 个答案:

答案 0 :(得分:1)

这是依赖关系的问题。这不是主要问题,但是将来需要依赖维护者进行修复。

这与运行依赖项的队列/线程有关。它只会影响iOS。

您目前无法删除警告。

您可以只隐藏黄色警告框,但仍会将警告记录在控制台中。

import { YellowBox } from 'react-native';

YellowBox.ignoreWarnings(['Module AdChoiceManager requires main queue setup since']); 

https://facebook.github.io/react-native/docs/debugging#in-app-errors-and-warnings

我不是100%确信这是用于阻止它的正确文本,但这将与之类似。通常我只是警告开头的文字

要解决此问题

解决问题的唯一方法是通过自身的依赖关系对其进行修复。您将必须派生导致问题的存储库,进行更改,创建拉取请求,然后等待Facebook合并您的更改。等待期间,您可以使用自己的叉子。

在正确的文件中,该文件将以... Manager.m结尾,您只需添加该行

+ (BOOL) requiresMainQueueSetup { return YES; }

取决于他们如何设置依赖关系,可能有一个以上的位置需要完成。当您告诉依赖项需要哪个队列时,这将停止警告。

警告,您现在必须维护自己的依赖版本,直到Facebook实现您的提取请求为止。