UNUserNotificationCenter link 错误

UNUserNotificationCenter link error

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

两个目标的代码相同。

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

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

我已经做了好几次clean和clean build target文件夹,重新启动Xcode,重新启动电脑但是什么也没做。

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

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

您没有链接到 UserNotifications.framework

  • Select 你的目标
  • 显示其"Build Phases"
  • 确保 UserNotifications.framework 存在于 "Link Binary With Libraries"

如果没有:

  • 点击“+”按钮添加

确保 UserNotifications.framework 存在于您的 Target > General > Linked Frameworks and Libraries

我遇到了几乎完全相同的问题,有两个目标,一个是免费版,一个是付费版。

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

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

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

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