Ошибка ссылки 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