Ошибка ссылки UNUserNotificationCenter

У меня есть проект Xcode, Xcode 8.1 (8B62) с двумя целями, один для платной версии приложения, а другой для бесплатной версии. Они оба управляют удалением push-уведомлений. Поскольку я внес изменения для iOS 10 с новой структурой UNUserNotificationCenter.framwork, все будет хорошо для первой цели, и у меня есть ошибка связи для второй. Он хорошо работал под IOS 9 со старыми методами. Что я сделал для обеих целей:

  • Возможности: Включено Push-уведомления (права на получение прав должным образом обновляются)
  • В AppDelegate.h: #import
  • В AppDelegate.m: Обновлен код с помощью новых методов

Это тот же код для обеих целей.

К сожалению, для второй цели у меня есть следующая ошибка:

Неопределенные символы для архитектуры arm64: "_OBJC_CLASS _ $ _ UNUserNotificationCenter", на который ссылаются: Objc-class-ref в AppDelegate.o Ld: символы не найдены для архитектуры Clang: ошибка: команда компоновщика завершилась с кодом выхода 1 (используйте [ CN00], чтобы увидеть вызов)

Я сделал несколько раз чистую и чистую сборку целевой папки, перезапустите Xcode, перезапустите компьютер, но ничего не сделано.

Ничего не найдено на разных форумах...

Помощь будет приветствоваться. Заранее спасибо.

Ответ 1

Вы не UserNotifications.framework на UserNotifications.framework.

  • Выберите цель
  • Покажите его "Фазы сборки"
  • Обеспечить, что UserNotifications.framework существует в "Link Binary With Libraries"

Если это не так:

  • Нажмите кнопку "+" и добавьте его

Ответ 2

У меня была почти такая же проблема с двумя целями: одна для бесплатной версии, одна для платной версии.

Я сильно подозреваю, что разница в том, что с одной целью "Включить модули" было ДА (это была цель для бесплатной версии, где я делал @import для Admob), тогда как с другой целью "Включить модули" было NO. Как и магия, мне не нужно было добавлять UserNotifications.framework в "Link Binary with Libraries" на этапах сборки для цели, где "Включить модули" было YES. Однако для цели, где "Включить модули" было НЕТ, я получил

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

и он ушел, вручную добавив UserNotifications.framework в "Link Binary with Libraries".

Поэтому, возможно, это правило, это нужно делать, если и только если модули не включены.

Ответ 3

Убедитесь, что UserNotifications.framework существует в вашей Target > General > Linked Frameworks and Libraries