UNUserNotificationCenter链接错误

时间:2016-11-19 10:27:33

标签: ios xcode ios10 unusernotificationcenter

我有一个Xcode项目,Xcode 8.1(8B62)有两个目标,一个用于付费版本的应用程序,另一个用于免费版本。他们都管理遥控器推送通知。由于我使用新的框架UNUserNotificationCenter.framwork对iOS 10进行了更改,因此第一个目标的一切都很好,而第二个目标的链接错误。它使用旧方法在iOS 9下运行良好。我为两个目标做了什么:

  • 功能:启用推送通知(权利已正确更新)
  • 在AppDelegate.h中:#import
  • 在AppDelegate.m中:使用新方法更新了代码

这两个目标都是相同的代码。

不幸的是,对于第二个目标,我有以下错误:

架构arm64的未定义符号: “_OBJC_CLASS _ $ _ UNUserNotificationCenter”,引自: AppDelegate.o中的Objc-class-ref Ld:找不到建筑的符号 Clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

我已经完成了几次干净整洁的构建目标文件夹,重新启动Xcode,重新启动计算机但没有做任何事情。

在不同的论坛中找不到......

欢迎提供帮助。提前谢谢。

3 个答案:

答案 0 :(得分:31)

您没有链接到UserNotifications.framework

  • 选择目标
  • 展示其“构建阶段”
  • 确保“Link Binary With Libraries”中存在UserNotifications.framework

如果没有:

  • 点击“+”按钮并添加

答案 1 :(得分:2)

我有几乎完全相同的问题,有两个目标,一个用于免费版本,一个用于付费版本。

我强烈怀疑不同之处在于,对于一​​个目标,“启用模块”为YES(这是免费版本的目标,我正在为Admob执行@import),而对于另一个目标,“启用”模块“没有。就像魔术一样,我没有必须在Build Phases的“Link Binary with Libraries”中为“Enable modules”为YES的目标添加UserNotifications.framework。但是,对于“启用模块”为NO的目标,我得到了

Undefined symbols for architecture arm64:   "_OBJC_CLASS _ $ _ UNUserNotificationCenter

它通过手动将UserNotifications.framework添加到“Link Binary with Libraries”而消失了。

所以也许规则是,当且仅当模块未启用时才需要这样做。

答案 2 :(得分:1)

确保UserNotifications.framework

中存在Target > General > Linked Frameworks and Libraries