【问题标题】:'sharedApplication' is unavailable: not available on iOS (App Extension)'sharedApplication' 不可用:在 iOS 上不可用(应用程序扩展)
【发布时间】:2017-07-08 15:29:42
【问题描述】:

我正在构建一个应用程序并在一两个月前为其开发了 Today Extension。随机,在 iOS 11 Beta 中可能是第 10 次运行它时,我第一次遇到错误,现在整个应用程序将无法构建。

/Users/Documents/AppName/Pods/CarbonKit/CarbonKit/CarbonTabSwipeNavigation.m:622:27: 'sharedApplication' 不可用:在 iOS 上不可用(App 扩展) - 在适当的情况下使用基于视图控制器的解决方案 而是。

错误出现在 Pod 中,但它是在一个用 Obj-C 而不是 Swift 编写的文件中,所以很难理解。

这些是出现错误的行:

  // Some projects use GTM_BACKGROUND_TASK_FETCHING to avoid compile-time references
  // to UIApplication.
#if GTM_BACKGROUND_TASK_FETCHING
  return (id<GTMUIApplicationProtocol>) [UIApplication sharedApplication]; <- error
#else
  return nil;
#endif

任何人都可以就如何解决此错误提供建议吗?任何帮助将不胜感激。提前致谢!

干杯, 西奥

【问题讨论】:

  • @rmaddy 你为什么要去掉我的 swift 标签?我把它放在那里是因为我的应用程序是用 swift 编写的,所以它与这个问题有关。
  • 你看过谷歌在这个问题上的说法吗?我在第二页结果后停止浏览。
  • @rmaddy 我确实提到它是用 swift 编写的。 “...用 Obj-C 编写,而不是 Swift,所以很难理解。”
  • @danh 是的,我试过了。所有与其他吊舱有关,而不是碳套件。我发现了一些 abt alamofire 但答案与我的情况完全不同。不过谢谢
  • 如果您查看 description for the swift tag,它会说“仅将标签用于有关语言功能的问题,或需要 Swift 中的代码。”因此没有理由删除标签。

标签: ios objective-c swift xcode cocoapods


【解决方案1】:

正如错误明确指出的那样,以下 API 不适用于 Today Extensions:

[UIApplication sharedApplication]

请阅读苹果提供的documentation on App Extensions:

某些 API 不适用于应用扩展

由于其在系统中的主要作用,应用扩展程序没有资格参与某些活动。应用扩展不能:

  • 访问 sharedApplication 对象,因此不能使用该对象上的任何方法

- Apple,应用程序扩展编程指南

确保 CarbonKit(或者,实际上,任何使用这些 API 的东西)不包含在您的 Today App Extensiontarget 中。一旦它被包含在你的扩展目标中,Xcode 应该会自动警告你(尽管可以暂时关闭这些警告)。

【讨论】:

  • 非常感谢您的回答! carbonkit 不包含在我的 podfile 的今天扩展部分中。这就是为什么它如此奇怪!有什么线索吗?
  • 这些文件不包含在实用程序检查器的“目标成员”部分,或“链接二进制与库”构建阶段或“复制捆绑资源”构建阶段?
  • 完全没有。它很奇怪,它出现在两个地方。一次是在 carbonkit 文件中,它在 Today Extension 的 podfile 的目标成员中,又是在 GTMSessionFetcher 文件中,Firebase 使用该文件并且 Firebase 被包含在中在 Today Extension 的 podfile 的目标成员中。还是很迷茫
【解决方案2】:

这对我有用。 转到您的目标构建设置并找到Require Only AppExtension-Safe API 并将值设置为No。 这将消除此错误。

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多