React-native-onesignal: 从 iOS 运行 init 时显示错误 - RNOneSignal.initWithAppId undefined is not an object

创建于 2018-05-11  ·  31评论  ·  资料来源: OneSignal/react-native-onesignal

描述:
从iOS运行init时显示错误,Android很好

TypeError: TypeError: undefined is not an object (evaluating 'RNOneSignal.initWithAppId')

环境

    "react": "16.3.1",
    "react-native": "0.55.3",
    "react-native-onesignal": "^3.2.0",

重现问题的步骤:

  1. 安装指南后(使用 js init)
  2. 从 js 运行初始化

最有用的评论

大家好,我解决了这个问题。 您只需要cd ios然后运行pod install ,然后您需要从 node_modules 添加项目库 RCTOneSigna,然后添加 Build Settings --> Header Search Paths $(SRCROOT)/../node_modules/react-native-onesignal/ios/RCTOneSignal$(SRCROOT)/../node_modules/react-native-onesignal/ios两者都递归。

所有31条评论

+1,我也有同样的问题

"react-native-onesignal": "^3.2.1",

我打电话给OneSignal.init('appId')

+1 "react-native-onesignal": "^3.2.1"

+1 刚刚在 3.2.1 上也尝试过这个功能,除了 OneSignal 似乎在.init()上什么也没做。 我的设备从未出现在 OneSignal 控制台中。 可能与这个问题有关,特别是如果图书馆由于某种原因在我这边默默地失败了。

@dorshay6 @mnshkv @podvipodvert

你们中有人想参加世博会吗? 我们最近更新了 SDK,以便它在 Expo 客户端中静默不做任何事情(不崩溃、不运行等)。 在您从 Expo 分离并在本地运行它之前,它基本上会保持未初始化状态。

但是看起来我们没有将此检查添加到init()函数中,因此如果您从 Expo 客户端调用它会崩溃,我们将很快修复此问题。

无论如何,这表明 RNOneSignal 本机事件发射器没有以某种方式初始化。 我知道会导致这种情况的唯一环境是世博会

不在世博会,可能是一个糟糕的安装? 找不到我错的地方

这可能是一个链接问题。 你确定你跑了react-native link react-native-onesignal吗?

能不能在AppDelegate中导入RCTOneSignal.h,使用native方法进行初始化? 旧的本机初始化方法已被弃用,但它仍然有效。

我确实运行了链接,但它没有帮助,稍后将尝试导入

同样的问题“react-native”:“0.50.4”,“react-native-onesignal”:“^3.2.1”,

大家好,我解决了这个问题。 您只需要cd ios然后运行pod install ,然后您需要从 node_modules 添加项目库 RCTOneSigna,然后添加 Build Settings --> Header Search Paths $(SRCROOT)/../node_modules/react-native-onesignal/ios/RCTOneSignal$(SRCROOT)/../node_modules/react-native-onesignal/ios两者都递归。

@podvipodvert您的 podfile pod 'react-native-onesignal', :path => '../node_modules/react-native-onesignal'中有下一行吗?

@dorshay6是的

@Nightsd01能否请您分享 iOS 中本机 init 的文档? 在这个仓库中找不到它们

@podvipodvert你能告诉我更多关于这一步then you need to add in your project libraries RCTOneSigna from node_modules的信息吗? 我做了 pod install 并添加了搜索路径,但我仍然没有解决方案

@dorshay6打开你的 node_modules 文件夹,找到 react native onesignal 然后 ios 文件夹,然后像这样拖动它们 =)

嘿伙计们,在运行react-native link react-native-onesignal之后,你能验证在 Xcode 项目中, libRCTOneSignal.a是否出现在 xcode 项目设置的 Linked Libraries 部分中?

@dorshay6版本 3.2.2 修复了我们的 Podspec,它会导致 cocoapods 的编译器问题。 但实际上,除非您安装了所有其他依赖项,否则您不需要使用 cocoapods。 否则,只需使用 npm 并做出反应链接。

对于仍然遇到此问题的任何人,请执行以下两项操作之一:

  1. 如果您正在使用 cocoapods 安装 iOS 依赖项(即 React 依赖项),请更新到 react-native-onesignal 3.2.2 并运行pod install

  2. 如果您不使用 cocoapods 安装 iOS 依赖项,则需要确保 react-native-onesignal 显示为 Xcode 子项目,如此屏幕截图所示。 如果您没有将 RCTOneSignal 视为 Xcode 项目,请告诉我

有人能够完成这项工作吗? 我刚刚拥有 3.2.2 版本,我通过在init()之前添加带有空对象作为参数的configure()方法使其在 Android 上工作,但在 iOS 中,它仍然无法工作. @Nightsd01我有你在我的 Xcode 项目中提供的屏幕截图,但仍然没有运气。 请帮忙。 谢谢。

@dorshay6如果 3.2.3 为您解决了这个问题,请告诉我

只是在我这边解决了这个问题。 安装3.2.3后,我必须从 Linked Libraries 部分中删除libRCTOneSignal.a ,然后重新添加它。 现在调用OneSignal.init()很有魅力:)。

这听起来像是 Xcode pbxproject 链接问题 - 它发生了。 通常你可以直接替换静态库(比如 libOneSignal.a),Xcode 就能很好地链接到它。

我将关闭此问题,因为它应该在 3.2.3 之前修复 - 如果您仍然遇到此问题,请随时回复,我很乐意重新打开此问题并进行调查!

@Nightsd01为我解决了谢谢

+1 我有同样的问题。
我再次使用react-native link react-native-onesignal并解决了我的问题。

screen shot 2018-05-21 at 1 43 02 pm

我已经通过手动链接库来解决它。

@Nightsd01 ,我需要一些帮助。
我正在使用react-native-onesignal: 3.2.5 ,但是在安装和链接之后,lib 没有显示为 Xcode 子项目。
如何手动添加?

@matias91是的,@ shafayeatsumit的链接是你应该做的。 基本上,您需要将 RCTOneSignal.xcodeproj 文件(来自 node_modules)拖到您的 Xcode 项目中,然后将库链接到目标的 Link Binary with Libraries 部分

感谢@shafayeatsumit和@Nightsd01 的回答。
那成功了!

谢谢@shafayeatsumit ,这对我有用! 当我卸载软件包时,这发生在我身上,因为它由于更新而搞砸了。 我再次安装它并手动链接它修复它。 👍

您还必须将 (libRCTOneSignal.a) 添加到您的主要应用程序目标中。
这解决了我的问题

在主项目中添加“libRCTOneSignal.a” -> Build Phases -> Link Binary with Libararies

此页面是否有帮助?
0 / 5 - 0 等级