React-native-onesignal: OneSignalNotificationServiceExtension 导致 sharedApplication 构建问题

创建于 2019-09-10  ·  12评论  ·  资料来源: OneSignal/react-native-onesignal

描述:
添加目标 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 中的说明添加扩展
尝试构建

还要别的吗:

全部在说明中

Need More Information

最有用的评论

解决了这个完全相同的问题,就像@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

所有12条评论

你能包括完整的错误吗? 还是截图?

更新:我们已经发布了 3.4.0 版,应该可以解决这个问题。 如果没有,请发表评论,我将重新打开。 干杯

嗨, @rgomezp 。 我目前在 3.4.1 上有这个错误。

node_modules/react-native/React/DevSupport/RCTDevLoadingView.m:77:42: 'sharedApplication' 不可用:iOS 上不可用(应用程序扩展) - 在适当的地方使用基于视图控制器的解决方案。

不确定这是否适用于您的图书馆,但我会通知您

所以。

  1. 没有任何OneSignalNotificationServiceExtension的项目成功构建。
  2. 默认添加了OneSignalNotificationServiceExtension和内容(没有 Onesignal 导入)
  3. 将 Onesignal 添加到 podfile:
target 'OneSignalNotificationServiceExtension' do
  pod 'OneSignal', '>= 2.9.3', '< 3.0'
end

并推出了pod install

  1. 然后尝试构建项目,我们将收到:

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

谢谢,这也为我修好了。 我的印象是其他答案提出了相反的意见。

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