描述:
添加目标 OneSignalNotificationServiceExtension 导致我的应用程序无法构建,因为无法在应用程序扩展中使用某些东西......在这种情况下,该错误专门与 sharedApplication 有关(它实际上在 RCTRedBox.m 中显示为问题) . 该应用程序构建良好,即使使用 react-native-onesignal,直到我添加扩展。
环境
反应原生信号:3.3.3
反应原生:0.59.9
通过yarn添加SDK,然后react-native链接react-native-onesignal
重现问题的步骤:
我没有时间尝试在我的应用程序以外的应用程序中重现......在我的应用程序上(所以大概是其他应用程序?):
通过yarn安装SDK
链接包
吊舱安装
按照https://documentation.onesignal.com/docs/react-native-sdk-setup#section -usage 中的说明添加扩展
尝试构建
还要别的吗:
全部在说明中
你能包括完整的错误吗? 还是截图?
更新:我们已经发布了 3.4.0 版,应该可以解决这个问题。 如果没有,请发表评论,我将重新打开。 干杯
嗨, @rgomezp 。 我目前在 3.4.1 上有这个错误。
node_modules/react-native/React/DevSupport/RCTDevLoadingView.m:77:42: 'sharedApplication' 不可用:iOS 上不可用(应用程序扩展) - 在适当的地方使用基于视图控制器的解决方案。
不确定这是否适用于您的图书馆,但我会通知您
所以。
OneSignalNotificationServiceExtension
的项目成功构建。OneSignalNotificationServiceExtension
和内容(没有 Onesignal 导入)target 'OneSignalNotificationServiceExtension' do
pod 'OneSignal', '>= 2.9.3', '< 3.0'
end
并推出了pod install
node_modules/react-native/React/DevSupport/RCTDevLoadingView.m:77:42: 'sharedApplication' 不可用:iOS 上不可用(应用程序扩展) - 在适当的地方使用基于视图控制器的解决方案。
System:
OS: macOS 10.14.6
CPU: (6) x64 Intel(R) Core(TM) i5-8500B CPU @ 3.00GHz
Memory: 11.75 GB / 32.00 GB
Shell: 5.3 - /bin/zsh
Binaries:
Node: 10.16.1 - ~/.nvm/versions/node/v10.16.1/bin/node
Yarn: 1.17.3 - /usr/local/bin/yarn
npm: 6.9.0 - ~/.nvm/versions/node/v10.16.1/bin/npm
SDKs:
iOS SDK:
Platforms: iOS 13.0, DriverKit 19.0, macOS 10.15, tvOS 13.0, watchOS 6.0
Android SDK:
API Levels: 23, 25, 27, 28, 29
Build Tools: 25.0.2, 25.0.3, 28.0.3, 29.0.1, 29.0.2
System Images: android-28 | Google APIs Intel x86 Atom, android-29 | Google APIs Intel x86 Atom
IDEs:
Android Studio: 3.5 AI-191.8026.42.35.5791312
Xcode: 11.0/11A419c - /usr/bin/xcodebuild
npmPackages:
react: 16.8.6 => 16.8.6
react-native: 0.60.5 => 0.60.5
@indapublic ,
看看这个堆栈溢出,这可能会有所帮助。 如果任何建议的解决方案适合您,请在此处发表评论,以便我们可以关闭故障单并帮助可能遇到问题的任何其他人:
https://stackoverflow.com/questions/34225213/uiapplication-sharedapplication-not-available
或者
https://stackoverflow.com/questions/32031071/error-sharedapplication-is-unavailable-not-available-on-ios-app-extension
谢谢,@rgomezp。 我发现我的 podfile 是错误的。 我昨天在错误的部分移动了目标“OneSignalNotificationServiceExtension”。 一切正常。 谢谢和抱歉。 我可以关闭这个问题
@indapublic ,
你能展示你的 podfile 不工作时的样子吗? 如果人们将来犯同样的错误,这将有助于他们
target 'app' do
target 'OneSignalNotificationServiceExtension' do
pod 'OneSignal', '>= 2.9.3', '< 3.0'
end
end
对 cocoapods 还没有太多经验,认为扩展依赖于应用程序
解决了这个完全相同的问题,就像@indapublic一样,我错误地将扩展添加到了我的 Podfile 中。 只是想增加一些清晰度。
当您在应用程序的目标中添加服务的目标时会出现此问题。
这是错误的:
target 'app' do
rn_path = '../node_modules/react-native'
....
target 'OneSignalNotificationServiceExtension' do
pod 'OneSignal', '>= 2.9.3', '< 3.0'
end
end
这是对的:
target 'app' do
rn_path = '../node_modules/react-native'
....
end
target 'OneSignalNotificationServiceExtension' do
pod 'OneSignal', '>= 2.9.3', '< 3.0'
end
此代码段需要是其自己的顶级目标,而不是您应用的子目标。
一旦更正,只需再次运行pod install
。
谢谢,这也为我修好了。 我的印象是其他答案提出了相反的意见。
最有用的评论
解决了这个完全相同的问题,就像@indapublic一样,我错误地将扩展添加到了我的 Podfile 中。 只是想增加一些清晰度。
当您在应用程序的目标中添加服务的目标时会出现此问题。
这是错误的:
这是对的:
此代码段需要是其自己的顶级目标,而不是您应用的子目标。
一旦更正,只需再次运行
pod install
。