javascript - 如何使用 React Native 为 IOS 正确安装 Facebook 广告
问题描述
尝试通过 IOS 启动我的应用程序时,我在 React Native 中收到警告:
“Module 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 上运行良好,我只是不确定如何让 Facebook 广告正常运行,而不会在 IOS 上发出警告。
我的问题是,我该如何解决这个问题/警告?几天来,我一直在尝试将其从屏幕上删除,但无济于事。
解决方案
这是依赖关系的问题。这不是一个主要问题,但将来需要依赖维护者进行修复。
这与运行依赖项的队列/线程有关。它只影响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 实施您的拉取请求。
推荐阅读
- css - 数组中元素的某些属性抛出“不可分配给DetailedHTMLProps”错误
- solr - 在独立模式下使用 Solr 包
- system-verilog - 为什么“Implication”和“if-else”约束显示不同的结果?
- html - 为什么我的 div 没有出现在我的图像上方?
- sql - 如何使用 SQL 将这四行转换为列
- c# - 在 C# (Webform) 中使用 Webview2 激活固定版本
- javascript - 带有标签的navigateByURL落在错误的位置-路由器出口内的Angular routerLink
- typescript - 如何从类型可能不存在的对象中访问值
- python - 请指出我是如何设法创建一个无限循环的
- swift - SwiftUI 计算器中的结果没有小数位