使用通知扩展会导致 Cocoapods 出现问题

Posted

技术标签:

【中文标题】使用通知扩展会导致 Cocoapods 出现问题【英文标题】:Using a Notification Extension causes issue with Cocoapods 【发布时间】:2018-06-28 18:39:18 【问题描述】:

我的应用中有一个通知扩展程序。但是,当我构建我的应用程序时,它与 pod FBSDKLoginKit 冲突。它在 FBSDKCoreKit 中给了我以下错误:

'sharedApplication' is unavailable: not available on ios (App Extension) - Use view controller based solutions where appropriate instead.

我的 Podfile 看起来像这样(我错过了不相关的 pod):

workspace 'MyApp'
platform :ios, '10.0'

target 'MyApp' do
  use_frameworks!
  project 'MyApp.xcodeproj'
  pod 'FBSDKLoginKit'
  pod 'OneSignal', '>= 2.6.2', '< 3.0'

  target 'OneSignalNotificationServiceExtension' do
    pod 'OneSignal', '>= 2.6.2', '< 3.0'
  end
end

我该如何解决这个问题?

【问题讨论】:

据我了解,您在非控制器视图类中调用“sharedApplication”。所以它与你的 podfile afaik 无关。尝试将扩展继承到 UIViewController 以进行测试,然后重试。 Facebook的FBSDKLoginKit框架出现错误,使用Cocoapods导入。我无法控制这段代码。 查看此链接。它可能会帮助你。 ***.com/questions/34225213/… 【参考方案1】:

OneSignalNotificationServiceExtension 目标移出 Podfile 中的主要目标。不要忘记在其中定义use_frameworks!

workspace 'MyApp'
platform :ios, '10.0'

target 'MyApp' do
  use_frameworks!
  project 'MyApp.xcodeproj'
  pod 'FBSDKLoginKit'
  pod 'OneSignal', '>= 2.6.2', '< 3.0'
end

target 'OneSignalNotificationServiceExtension' do
  use_frameworks!
  pod 'OneSignal', '>= 2.6.2', '< 3.0'
end

pod install,清理并构建,这应该可以解决问题?

【讨论】:

以上是关于使用通知扩展会导致 Cocoapods 出现问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥内部类的扩展会得到重复的外部类引用?

将 pod 添加到 Today 扩展会强制生成通用存档

为啥在管道代码块中延迟扩展会失败?

当您在情节提要中“因特性而异”时,为啥此自动布局扩展会失败?

在 ES6 Node.js 中导入“.json”扩展会引发错误

如何在 virtualenv 中使用 MinGW 编译 Python C 扩展?