Ошибка ручной интеграции Xcode OneSignal iOS SDK - неопределенные символы для архитектуры x86_64: "_OBJC_CLASS _ $ _ OneSignal" - PullRequest
0 голосов
/ 15 апреля 2019

У меня проблемы со сборкой при ручной интеграции OneSignal в Xcode для моего проекта React Native.Динамическая интеграция с использованием Cocoapods не работает (вызывает серьезные конфликтные проблемы).Я потратил часы на устранение неполадок с поддержкой OneSignal и использованием онлайн-материалов, но не повезло.Я также попробовал React Native SDK, который не выдает ошибку, но и не работает.Я думаю, что я почти здесь, но возникла проблема, которую я не смог решить.

Как только я добавляю следующий код в мой AppDelegate.m:

[OneSignal initWithLaunchOptions:launchOptions
                         appId:@"00000000-0000-0000-0000-000000000000"
      handleNotificationAction:nil
                      settings:@{kOSSettingsKeyAutoPrompt: @false}];
OneSignal.inFocusDisplayType = OSNotificationDisplayTypeNotification;

[OneSignal promptForPushNotificationsWithUserResponse:^(BOOL accepted) {
NSLog(@"User accepted notifications: %d", accepted);

Я получаюследующая ошибка при сборке:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_OneSignal", referenced from:
          objc-class-ref in AppDelegate.o
  "_kOSSettingsKeyAutoPrompt", referenced from:
      -[AppDelegate application:didFinishLaunchingWithOptions:] in 
AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to 
see invocation)

Я пробежался через Google и StackOverflow за ответ, но не повезло.Кажется, что почти все используют Cocoapods или Carthiage.

Я следовал этому: https://documentation.onesignal.com/docs/ios-sdk-setup и у меня возникла проблема здесь ... https://documentation.onesignal.com/docs/ios-sdk-setup#section-4-add-required-code. Если я закомментирую этот код, он будет прекрасно работать,Даже импорт OneSignal.h не имеет проблем.

Я также попробовал это: https://documentation.onesignal.com/docs/react-native-sdk-setup. Все это работает как положено, если я следую разделу "Без кокапод".Когда я добавляю код React Native в свой проект, все кажется нормальным, но я не вижу сеанс, зарегистрированный в OneSignal.

1 Ответ

0 голосов
/ 15 апреля 2019

Когда я добавляю собственный код React в свой проект, все кажется нормальным но я не вижу сеанс, зарегистрированный в OneSignal.

и

Неопределенные символы для архитектуры x86_64:

Из того, что я вижу, я могу предположить, что вы пытаетесь запустить свой код на simulator

Дело в том, что Симулятор iOS не поддерживает push-уведомления (хотя Android поддерживает его, но для Android он называется эмулятором, а не симулятором, вы можете зайти в Google, если хотите узнать больше об этом)

Поскольку функция push работает только для реального устройства, я предполагаю, что ребята из OneSignal не предоставляют скомпилированную версию для симулятора.

Если реагирующая версия работает нормально с реальным устройством, значит, она работает как положено.

...