描述:
从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,我也有同样的问题
"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 并做出反应链接。
对于仍然遇到此问题的任何人,请执行以下两项操作之一:
如果您正在使用 cocoapods 安装 iOS 依赖项(即 React 依赖项),请更新到 react-native-onesignal 3.2.2 并运行pod install
如果您不使用 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
并解决了我的问题。
我已经通过手动链接库来解决它。
@Nightsd01 ,我需要一些帮助。
我正在使用react-native-onesignal: 3.2.5
,但是在安装和链接之后,lib 没有显示为 Xcode 子项目。
如何手动添加?
@matias91看看这部分文档。
https://facebook.github.io/react-native/docs/linking-libraries-ios.html#manual -linking
@matias91是的,@ shafayeatsumit的链接是你应该做的。 基本上,您需要将 RCTOneSignal.xcodeproj 文件(来自 node_modules)拖到您的 Xcode 项目中,然后将库链接到目标的 Link Binary with Libraries 部分
感谢@shafayeatsumit和@Nightsd01 的回答。
那成功了!
谢谢@shafayeatsumit ,这对我有用! 当我卸载软件包时,这发生在我身上,因为它由于更新而搞砸了。 我再次安装它并手动链接它修复它。 👍
您还必须将 (libRCTOneSignal.a) 添加到您的主要应用程序目标中。
这解决了我的问题
在主项目中添加“libRCTOneSignal.a” -> Build Phases -> Link Binary with Libararies
最有用的评论
大家好,我解决了这个问题。 您只需要
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
两者都递归。