React-native-onesignal: 未找到 OneSignal/OneSignal.h 文件

创建于 2017-01-07  ·  40评论  ·  资料来源: OneSignal/react-native-onesignal

嗨 - 上一期已关闭,所以我要开始新一期了。

我使用的是 RN 0.39,我执行了“react-native-link”并遵循自述文件中的每条指令,但我们不使用 Pod,因此我没有任何 Podfile 可以更新。 在没有 Podfiles 的情况下我如何做到这一点?

仍然得到上面的错误。

最有用的评论

@eriksape我不确定你在问什么,我没有把框架放在任何地方。 我运行“yarn install”,框架显示在节点模块下。

安装 v2.0.0 后,我进入 node_modules/react-native-onesignal 并寻找自己:

$ find . | grep OneSignal.h
./ios/Frameworks/OneSignal.framework/Versions/A/Headers/OneSignal.h
./ios/Frameworks/OneSignal.framework/Versions/B/Headers/OneSignal.h
./ios/RCTOneSignal/RCTOneSignal.h

确实没有“OneSignal/OneSignal.h”存在的地方。 文件“OneSignal.h”存在,但不在名为“OneSignal”的文件夹下。 如果我们可以修复此路径并克服此构建错误,我的问题将得到解决。

所有40条评论

有人有没有 Podfiles 的建议吗?

添加具有值的框架搜索路径

$(SRCROOT)/../node_modules/react-native-onesignal

并将包含在此包中的 OneSignal.framework 添加到 xcode 上的项目中

我也在寻找如何在没有 Pods 的情况下安装它......是否有一些文档?

@gplopes尝试我之前评论的内容,我这样做了,我不使用豆荚👍

@eriksape感谢您的回答,我添加了您提到的路径,但我仍然收到
未找到#import <OneSignal/OneSignal.h>文件。
我正在使用

“反应原生”:“0.36.1”,
"react-native-onesignal": "2.0.0",

@gplopes并将

如果你做得好,你会看到链接的库

image

@eriksape ,是的,这是 xcode 的屏幕截图。

screen shot 2017-01-16 at 2 54 17 pm

screen shot 2017-01-16 at 2 53 26 pm

我使用 react-native 0.39 进行了测试,但使用了 "react-native-onesignal": "^1.2.3"

正如我所见,1.2.3 与 react-native 0.36 配合良好

@gplopes我已将您的建议添加到文档中,它应该可以解决问题。
无论如何,我建议你们所有人升级到3.0.0

谢谢!

当然,如果你使用的RN高达0.39,请使用v2。

@gplopes你有没有让它工作? 我遇到了同样的问题,这个库的 RN=0.39, v2.0.0,我遵循了所有关于“链接框架和库”和搜索路径的建议。

你能提供一个我可以测试的回购吗?

我试图在一个最小的 repo 中重现这个并遇到另一个错误(#139)。 也许你可以创建一个https://github.com/GeoffreyPlitt/react_native_minimal的分支并向我们展示一个有效的版本? 如果没有,一旦我克服了另一个错误,我就会重现这个。

注意:没有可可豆。

正如我之前所说,v1.2.3 没有 cocoapods 工作正常。
我不知道为什么它需要可可豆

在我的项目中的依赖项可以使用 react-native 0.40 后,我将使用 v3

我剪切了那个最小项目的一个新分支并切换到这个库的 1.2.3: https :

我仍然收到以下错误,您是否收到相同的错误或对您来说运行良好?

In file included from /Users/giro/react_native_minimal/ios/react_native_minimal/AppDelegate.m:10:
In file included from /Users/giro/react_native_minimal/ios/react_native_minimal/AppDelegate.h:11:
../node_modules/react-native-onesignal/ios/RCTOneSignal/RCTOneSignal.h:3:9: fatal error: 'OneSignal/OneSignal.h' file not found
#import <OneSignal/OneSignal.h>
        ^

screen shot 2017-01-18 at 22 25 45
screen shot 2017-01-18 at 22 25 36

所有项目都很好,没有错误,我会上传一个例子

@eriksape你能做一个 PR 来更新文档以在没有 CocoaPods 的情况下使用库吗? 我会很感激的。

@avishayil好的,我今天或明天会发送 PR,您使用的是哪个版本的 OneSignal for ios? 似乎 OneSignal.framework 缺少文件,我刚刚用 3.0.0 进行了测试。

是的,我注意到 OneSignal.framework 缺少头文件,这可能是此问题的根本原因

更新: @eriksape 非常好,可以分叉、修复并向我发送 PR,这个分支现在适用于 1.2.3:

https://github.com/GeoffreyPlitt/react_native_minimal/tree/onesignal_123

但是,当我开始使用此修复程序时,我注意到我的任何通知都没有通过,服务器报告:

Error: {"invalid_player_ids":["2ebaf054-acce-4ed6-b927-86fffd9d9c30"]}

那个 ID 正是这个库为我提供的那个。

我向 OneSignal 的支持人员询问了这个错误,他们说:
This means that the device with this ID is not subscribed to notifications, either because it opted-out of notifications or has uninstalled your app.

这些事情对我来说都不正确,因此进一步深入研究,他们的支持说:

I see you are using a very old version of our SDK. Please update to our latest 2.X SDK to fix the subscription issue. https://documentation.onesignal.com/docs/upgrading-to-ios-sdk-20

这意味着:使用 v1.2.3 允许我在 iOS 上构建,但它仍然不允许通知工作。 所以我急切地等待 v2.0.0 构建修复(缺少头文件)以便继续。

======> 有人可以重新打开这个问题吗? 因为我们还有更多的工作要做? 还是我应该创建一个新的?

在您的 android/ios JS 中,您需要为 onesignal 创建配置

类似的东西在这个 repo 的文档中

@eriksape我已经成功地执行了 Onesignal.configure(),它向我发送了一个看起来正确的 userId。

但是在https://github.com/GeoffreyPlitt/react_native_minimal/tree/onesignal_123 中,我看不到您在进行配置。 另外据我所知,当 ID 无效时,您需要生成新 ID。

哦,是的,很抱歉让您感到困惑 - 我只是使用该存储库来解决构建问题,我还有另一个(私人)项目,我真的在使用这些东西。

当ID无效时,如何生成新ID? 请记住,我没有将这个 ID 保存在某个地方,我没有使用旧的。 当我调用 configure() 时,我正在使用在最近的应用程序加载中生成的那个。

如果需要,我会将配置步骤添加到该存储库中以向您展示

@GeoffreyPlitt ,我要跳回这里,但我看到对话已经进入下一个层次。 不幸的是我没有时间再试一次。 我希望你们能弄清楚这一点。

@GeoffreyPlitt你对 1.2.3 来说是对的,它没有将令牌推送注册到一个信号,最好使用这个版本的 OneSingnal.framework 尝试使用这个库的 2.0.0 https://github.com/ OneSignal/OneSignal-iOS-SDK/archive/2.3.5.zip

我希望它有效

是的,与 2.0.0 版本相同的步骤
screen shot 2017-01-20 at 9 42 43 am

抱歉,当我意识到@GeoffreyPlitt提到它只能编译正常时,我在模拟器上测试了 1.2.3,请改用 2.0.0

这里有什么问题? 或者在谈话中有很多问题? 无论如何,这是我针对此问题标题的解决方案:
https://github.com/geektimecoil/react-native-onesignal/issues/152#issuecomment -274124225

我创建了一个新问题 #153,它捕获了解决此问题的剩余工作。

@avishayil感谢您的解决方法,但我担心这会让我在未来更难升级,我希望我们能够真正解决这个问题,这样一切都可以开箱即用。

@GeoffreyPlitt你把 OneSignal.framework 放在哪里了? 请注意,使用$(SRCROOT)/../node_modules/react-native-onesignal它需要在 react-native-onesignal 路线内

@avishayil 2.0.0 的问题与 3.0.0 的拉取请求相同

@eriksape我不确定你在问什么,我没有把框架放在任何地方。 我运行“yarn install”,框架显示在节点模块下。

安装 v2.0.0 后,我进入 node_modules/react-native-onesignal 并寻找自己:

$ find . | grep OneSignal.h
./ios/Frameworks/OneSignal.framework/Versions/A/Headers/OneSignal.h
./ios/Frameworks/OneSignal.framework/Versions/B/Headers/OneSignal.h
./ios/RCTOneSignal/RCTOneSignal.h

确实没有“OneSignal/OneSignal.h”存在的地方。 文件“OneSignal.h”存在,但不在名为“OneSignal”的文件夹下。 如果我们可以修复此路径并克服此构建错误,我的问题将得到解决。

OneSignal.framework 和这里的一样吗?

https://github.com/OneSignal/OneSignal-iOS-SDK/archive/2.3.5.zip

@eriksape我不知道?

这是一个重现构建错误的公共最小存储库: https :

有没有机构能够解决这个问题? 遇到同样的问题。 反应 0.40.0 + OneSignal 3.0

好的,我解决了我的问题,这是一个临时修复。 有在饥荒早期预警系统的符号链接OneSignal.framework
onesignal

当我们运行npm install这些目录丢失了。 从项目下载它们并手动添加它们可以解决问题。 这并不理想,希望这可以节省人们的工作时间。

谢谢。 它并没有真正帮助我们,因为我们的构建通过 CI 系统并且我们有执行新检出的脚本。 很高兴能解决这个问题!

@haxtrujillo我可以请你澄清一下吗? 我的意思是,你从哪里下载这些符号链接? 您提供给 OneSignal.framework 的第一个链接没有显示它们。
其次,您显示了一个屏幕截图,但我不确定,这是./node_modules/react-native-onesignal文件夹吗?

@kelset

我打开了一个新问题,它有更多信息以及如何温和地解决它。

头文件在版本目录中,您必须测试哪个版本适用于您的项目。

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