React-native-iap: Невозможно запустить на iOS из-за «неизвестного имени типа» SKPaymentDiscount.

Созданный на 25 апр. 2019  ·  38Комментарии  ·  Источник: dooboolab/react-native-iap

Версия react-native-iap

2.4.9

Версия реактивного натива

0,59,5

Платформы, на которых вы столкнулись с ошибкой (IOS, Android или обе?)

iOS

Ожидаемое поведение

Сборки приложений

Фактическое поведение

Приложение не собирается

Протестированная среда (Эмулятор? Реальное устройство?)

Эмулятор

Шаги для воспроизведения поведения

Просто реагируйте на собственные запуски ios с вышеуказанными версиями react-native-iap и React native

Это точная ошибка, которую я получаю:

/node_modules/react-native-iap/ios/RNIapIos.m:167:5: unknown type name 'SKPaymentDiscount'; did you mean 'SKProductDiscount'?

Я попытался переименовать SKPaymentDiscount в SKProductDiscount просто для того, чтобы посмотреть, и получил разные ошибки.

Дайте знать, если у вас появятся вопросы.

⌛️ legacy 📱 iOS

Самый полезный комментарий

У меня тоже есть эта проблема в версии 2.4.11 . Единственная версия, которая работала до того, как @hyochan внес изменения, это 2.4.8

Все 38 Комментарий

Я еще не тестировал это в последней версии ios . Я чувствую, что в новой версии произошли изменения. Не могли бы вы дать нам PR , если это возможно?

@hyochan Я был бы рад, но я не уверен на 100%, как бы я это сделал. Не могли бы вы провести меня через настройку PR для вас всех? Я не знаю, что исправить

@ndejesus1227 Как вы думаете, вы нашли решение этой проблемы?

@hyochan нет, не видел. Я пытался исправить это, но я знаю только JavaScript. Мне нужно найти кого-то, кто знает нативную iOS намного лучше, чем я.

@ndejesus1227 На самом деле, эта функция была реализована @renatoalencar в #455. В настоящее время я не могу помочь в этом.

Спасибо, @hyochan.

@renatoalencar, на какой версии React Native вы работаете? Я не уверен, следует ли мне сейчас понизить версию react-native-iap или RN.

Здравствуйте @ndejesus1227 , это моя вина, извините. На самом деле происходит то, что ваша версия iOS ниже 12.2. Как описано в документации Apple , SKPaymentDiscount доступен только для iOS 12.2+.

Я должен был проверить актуальную версию iOS, но в итоге забыл.

@renatoalencar а, хорошо. В этом есть смысл. Есть ли у вас какие-либо идеи о том, когда вы можете исправить это? Вы можете не торопиться, просто любопытно

Я буду переходить на версию до этого обновления, пока это не будет решено @hyochan @renatoalencar

У меня тоже есть эта проблема в версии 2.4.11 . Единственная версия, которая работала до того, как @hyochan внес изменения, это 2.4.8

Спасибо за объяснение @ggdegreat , поэтому я перехожу на 2.4.8!

У меня была такая же проблема, и я могу подтвердить, что 2.4.8 устраняет проблему. Спасибо за помощь!

Таким образом, пакет не будет совместим с ios ниже 12 от 2.4.9 . Я обновил readme для миграции .

Будет ли работать оплата через Apple Pay (без всплывающих окон)?

Нам нужно синхронизировать обе версии, если мы хотим использовать их в производственной библиотеке.

Мы не можем выбирать между версией > 12 и версией < 12 для бизнеса!

Я наверное чего-то не понимаю! Спасибо за вашу работу @hyochan !

У меня была такая же проблема - теперь решил. Больше года я не открывал Xcode. Сейчас взял свой iphone 6s и обновился до прошивки 12.3.1; мой Mac все еще был на «Sierra», поэтому моя установка Xcode не была совместима с последней версией ios. При попытке запустить код на iphone, подключенном к macbook, я получил эти сообщения. Тогда решение:

  • Я обновил свою Mac-OS до 10.14.5.
  • Я обновляю Xcode до 10.2.1
  • Я использую react-native-iap 2.5.5
  • iPhone 6S с iOS 12.3.1
  • выбросил экспо-проект с sdk 32.0.0, что означает expo-modified-react-native на основе 0.57

---> теперь все работает

Итак, приложение, использующее эту библиотеку, не будет работать на iOS <12.2?

Будет с 3.0.0

Спасибо, останусь на 2.4.8 до выхода 3.0.0

@DataGreed Только что выпустил 3.0.0 .

@hyochan мы все еще видим проблему с SKPaymentDiscount в версии 3.0.0.

Есть ли что-то, что нам не хватает? мы только что обновили версию package.json, установили и очистили/собрали приложение в xcode. Ошибка все еще появляется.

@danidfm Какова ваша цель сборки в ios ? Кроме того, попробуйте полностью удалить node_modules до npm install

цель сборки — 11.0, и мы полностью удалили папку node_modules.

у меня такая же проблема - пробовал 3.0.0, но откатился на 2.4.8

(кстати, до этого я пробовал версии 3.0.0 RC и все равно получал ту же ошибку)

Не могли бы вы все любезно протестировать проект IamExample и увидеть разницу с вашим проектом? Я хочу быть ясным при взгляде на одни и те же коды.

Здравствуйте @ndejesus1227 , это моя вина, извините. На самом деле происходит то, что ваша версия iOS ниже 12.2. Как описано в документации Apple , SKPaymentDiscount доступен только для iOS 12.2+.

Я должен был проверить актуальную версию iOS, но в итоге забыл.

Я просто хочу сказать, что он буквально послал его, чтобы проверить версию и избежать этого вопроса, но он забыл. Его запрос на извлечение никогда не должен был быть объединен с мастером.

Попытка запустить проект в Xcode для моего iPhone с iOS v12.3.1
Та же ошибка при использовании react-native-iap v3.2.2.
Переход на 2.4.8 (сборка прошла успешно)

Я думаю, причина в версии iOS, установленной на устройстве

Это очень странно, потому что некоторые из них уже подтвердили, что сборка в порядке (я тоже). Если у вас возникли проблемы с обновлением, попробуйте удалить ios/build , а затем повторите попытку.

Только сейчас попробовал построить. Проверьте IapExample .
image

@hyochan спасибо за вашу огромную поддержку!

Я только что испробовал все подсказки, упомянутые в этом выпуске (полностью удалил node_modules перед установкой npm, очистил приложение, удалил ios/build). К сожалению, я все еще сталкиваюсь с этой проблемой в сочетании с целью сборки 11.2 и react-native-iap v3.2.2. Я также попытался перейти на версию 2.4.8, что привело к успешной сборке. Более того, я попытался настроить IapExample, но в итоге столкнулся с проблемой, связанной с реакцией (https://github.com/facebook/react-native/issues/25252).

У меня такая же проблема на iMac с macOS 10.13. Мой макбук под управлением 10.15 работает нормально,

Может быть, старая версия Mac не работает? 🤔

@murilobas разные версии xCode?

Проверьте блок кода ошибки версии ОС #if __IPHONE_12_2 и перестройте

`#если __IPHONE_12_2

    SKPaymentDiscount *discount = [[SKPaymentDiscount alloc]
                                   initWithIdentifier:discountOffer[@"identifier"]
                                   keyIdentifier:discountOffer[@"keyIdentifier"]
                                   nonce:[[NSUUID alloc] initWithUUIDString:discountOffer[@"nonce"]]
                                   signature:discountOffer[@"signature"]
                                   timestamp:discountOffer[@"timestamp"]
                                   ];

    SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:product];
    payment.applicationUsername = usernameHash;
    payment.paymentDiscount = discount;

    [[SKPaymentQueue defaultQueue] addPayment:payment];
    [self addPromiseForKey:RCTKeyForInstance(payment.productIdentifier) resolve:resolve reject:reject];
    #endif `

так

Я столкнулся с этой проблемой. Обновление моего xcode с 10.1 до 10.2.1 устранило мою проблему. Теперь я могу построить свой проект.

Та же проблема с Xcode 10.1, я не могу обновить XCode до 10.2, потому что ему нужна OSX 10.14.3, не поддерживаемая моим старым iMac, застрявшим на 10.13.6.

@ lc3t35 , как вы создали проект iOS с помощью Xcode 10.1?

@liudmyla-schastlyvets Я не могу собрать с 10.1, мне пришлось использовать другой компьютер с последней версией Xcode :(

реактивный родной: 0.59.0
реагировать родной- iap: 2.4.8
Xкод: 10.1
Успешно построенный проект. Спасибо

Да, я тоже ! отличная работа ремонтников!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги