React-native-iap: iOS 14: getProducts () Неизвестная ошибка (RN 0,62.2–0,63)

Созданный на 18 сент. 2020  ·  50Комментарии  ·  Источник: dooboolab/react-native-iap

RNIap.getProducts () в последней версии React Native не работает, возвращая только неизвестную ошибку.

Версия react-native-iap

4.6.1

Версия react-native

0,63,0

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

iOS

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

товары для получения.

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

возвращается неизвестная ошибка

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

Симулятор iOS

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

Просто вызовите RNIap.getProducts () или RNIap.getSubscriptions ().

📱 iOS 🙏 help wanted

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

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

Я испытываю это также с симуляторами iOS под управлением iOS 14.0, но не имею проблем с другими версиями симуляторов (в частности, iOS 13.5).

Похоже, это проблема Apple с симулятором iOS 14.0: https://developer.apple.com/forums/thread/125164

Нашел эту ссылку через: https://github.com/dooboolab/react-native-iap/issues/1091

Спасибо @joeyscarim. Я связался с Apple и жду от них отзывов.

@rossbulat такая же проблема на iOS 14 ...
реагировать-native- iap -
Xcode - v12

YellowBox.js:71 Possible Unhandled Promise Rejection (id: 0): Error: UNKNOWN_ERROR Error: UNKNOWN_ERROR at Object.fn [as getItems] (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:2165:36) at http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:179261:33 at step (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:178999:21) at Object.next (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:178929:16) at http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:178901:69 at tryCallTwo (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:3277:7) at doResolve (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:3441:15) at new Promise (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:3300:5) at __awaiter (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:178880:12) at ios (http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:179258:16)

Всем привет,

Мы тоже это переживаем. После обновления до версии 4.6.1 почти каждый раз возникает "неизвестная ошибка".

Screenshot 2020-09-23 at 09 53 25

Привет ребят,
Думаю, я нашел решение нашей проблемы. Вы должны быть уверены, что initConnection запущен.
В моем примере я просто помещаю requestPurchase/requestSubscription внутри initConnection . Раньше он работал без него, теперь это просто необходимо.

@Hellhiem У меня есть initConnection,

Запуск следующей функции подтверждает, что ошибка все еще существует с помощью initConnection ()

  const getProducts = async () => {
      try {
        await RNIap.initConnection();
        const products: RNIap.Product[] = await RNIap.getProducts(IAP_SKUS);
      } catch (err) {
        console.log(err);
      }
  }

@rossbulat, что произойдет, если вы попробуете это:

const getProducts = async () => {
    return RNIap.initConnection().then(() => {
      try {
        const products: RNIap.Product[] = RNIap.getProducts(IAP_SKUS);

        return products;
      } catch (err) {
        console.log(err);
      }
    });
  };

Я сделал то же самое, но внутри then я положил requestPurchase/requestSubscription

@Hellhiem Все еще получает неизвестную ошибку! (это то же самое, что и мой код, но с использованием синтаксиса then вместо async / await).

Я взглянул на собственные API-интерфейсы модулей, функция getItems() кажется точкой отказа. Может ли один из основных разработчиков убедиться, что этот собственный вызов API работает должным образом на iOS 14?

@Hellhiem Я пробовал ваш код, но все еще получаю ту же неизвестную ошибку.

Инженеры Apple изучают этот случай через Feedback Assistant. Я буду обновлять эту ветку, когда мы определим, в чем проблема.

У меня возникла эта проблема в симуляторе iOS под управлением iOS 14.0

Та же проблема. Симулятор iOS 14 с xcode 12 не может получать продукты и выдает неизвестную ошибку

Та же проблема.

Та же проблема для реального устройства во время обзора Apple

У меня такая же проблема, но с функцией getSubscriptions

Я провел несколько тестов, и для меня [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers] просто возвращает пустое значение ...

та же проблема

Есть такая же проблема с getSubscriptions на стороне IOS, была выбрана UNKNOWN_ERROR, Xcode 12.0, response-native 0.62.2

@rossbulat удачи? Я тоже сталкиваюсь с той же проблемой

@rossbulat удачи? Я тоже сталкиваюсь с той же проблемой

Вы используете устройство или симулятор?

Привет, разработчики, я решил это. Я сделал следующее

  1. Я убедился, что принимаю все положения и условия пользовательских соглашений , убедившись, что статус активен
  2. Я убедился, что идентификатор продукта / подписки в разделе покупок в приложении вашего приложения отмечен как готовый к отправке

PS: Мой тест был на локальном устройстве

Проблема только в симуляторе iOS 14. Реальные устройства работают.

Apple замолчала за последнюю неделю, мне не делились обновлениями.

Для симулятора вам необходимо добавить файл конфигурации StoreKit в проект и выбрать его в схеме запуска. Но у меня была эта ошибка на устройстве

Проблема только в симуляторе iOS 14. Реальные устройства работают.

Apple замолчала за последнюю неделю, мне не делились обновлениями.

Вероятно, тестирование в покупках приложений теперь ограничено реальными устройствами, потому что я не могу найти возможность добавить тестер песочницы в симулятор iOS.

Проблема только в симуляторе iOS 14. Реальные устройства работают.

Apple замолчала за последнюю неделю, мне не делились обновлениями.

Вероятно, тестирование в покупках приложений теперь ограничено реальными устройствами, потому что я не могу найти возможность добавить тестер песочницы в симулятор iOS.

Управляется конфигурационным файлом storekit

@ilyasbat Я выполнил эти инструкции,

я решил с помощью strorekit config.
https://stackoverflow.com/questions/58020258/requesting-an-in-app-purchase-in-ios-13-fails/58065711#58065711

Добавляем файл конфигурации storekit, перекомпилируем и теперь работаем на симуляторе IOS 14 с xcode 12. Он работает отлично, и я действительно могу покупать предметы на симуляторе впервые.

@ilyasbat это исправление безопасно? Что произойдет, если я впоследствии изменю свои предложения продуктов в магазине приложений, например, изменю цены - они также будут обновлены в приложении или приложение застрянет с конфигурацией storeConfiguration.storekit ?

@ilyasbat это исправление безопасно? Что произойдет, если я впоследствии изменю свои предложения продуктов в магазине приложений, например, изменю цены - они также будут обновлены в приложении или приложение застрянет с конфигурацией storeConfiguration.storekit ?

Нашел эту действительно хорошую статью:
https://www.appcoda.com/storekit-testing/

Из того, что я читаю, похоже, что конфигурационный файл StoreKit предназначен только для отладки / тестирования:

Следующее поле - это цена покупки в приложении. Несмотря на то, что в App Store Connect есть ценовые уровни, здесь мы можем указать любое значение в виде произвольного текста. Цена указана только для целей тестирования, она не будет применяться к реальным покупкам в приложении и, конечно, не будет взиматься плата. Так что не стесняйтесь устанавливать любую цену, которую хотите. Для этой конкретной покупки в приложении, которую мы настраиваем здесь, вполне подойдет значение 0,99. Валютой цены будет валюта, соответствующая языку симулятора или любому языку, выбранному вручную (мы поговорим об этом позже). Итак, 0,99 может быть долларом, евро, иеной и так далее.

Я не уверен, что это еще известно (я не видел этого, упомянутого выше): я обнаружил, что продолжаю получать Error: UNKNOWN_ERROR когда запускаю npx react-native run-ios с терминала, но когда Я запускаю приложение из xcode, покупка в приложении (с помощью storekit) работает нормально.

"react-native": "0.61.4",
"react-native-iap": "^4.6.3",

xcode v12
macos 10.15.7

Поэтому в настоящее время невозможно использовать react-native-iap в производстве на устройстве с iOS 14? Поскольку единственный способ исправить [Error: UNKNOWN_ERROR] - это добавить файл Configuration.StoreKit , но только для тестовых целей, а не для производственной версии?

У кого-нибудь есть другое решение?

В настоящее время я использую эту библиотеку для покупок в приложении в производственной среде, Android и iOS (так что да, iOS 14). Я был в состоянии иметь пользователь успешно испытание в TestFlight (примечание: они не могут использовать отпечатки пальцев для входа в аккаунт, они должны Эндер Apple ID и пароль всегда - что является политикой компании Apple, а не недостаток этой библиотеки) и вещи , которые работают в производстве .

Вы пробовали тестировать свое приложение в TestFlight @RobinChailley ?

Я получил 2 моих реальных устройства на IOS 14.1, работающих с учетными записями песочницы, снова сделав следующее.

Следуйте инструкциям по созданию конфигурации StoreKit, выберите ее в схеме «Выполнить», а затем выполните сборку на свое устройство. Не уверен, нужен ли этот шаг, но принесите несколько продуктов. На этом этапе вы можете совершить покупку, но слушатель покупок выдаст ошибку, поскольку идентификатор транзакции для покупок равен «0».

Затем отмените выбор конфигурации StoreKit в схеме «Выполнить» и выполните сборку на свое устройство снова. На этот раз, когда вы загрузите продукты, вам будет предложено войти в систему. По какой-то причине я теперь могу войти в систему, используя свои учетные записи песочницы. Не уверен, почему, но, возможно, он что-то очищает или сбрасывает.

@karltaylor Да, мои покупки в приложении появятся при тестировании в TestFlight. Мой код выглядит примерно так:

try {
    IAP.initConnection()
        .then((success) => {
            if (!success) return Promise.reject("Failed to connect");

            // get products that can be purchased in iap store
            // Note: this is necessary for requestPurchase to work!
            const productIds = [PRODUCT_ID];
            return IAP.getProducts(productIds);
        })
        .then((prods) => {
            // get already-purchased items
            return getAvailablePurchases();
        })
        .then((purchases) => {
            // continue...
        })
}

Примечание: мой PRODUCT_ID соответствует тексту в столбце «Идентификатор продукта» в _appstoreconnect -> App Store -> Manage_

Каков «статус» ваших покупок в приложении в _appstoreconnect_?

@karltaylor Да, мои покупки в приложении появятся при тестировании в TestFlight. Мой код выглядит примерно так:

try {
    IAP.initConnection()
        .then((success) => {
            if (!success) return Promise.reject("Failed to connect");

            // get products that can be purchased in iap store
            // Note: this is necessary for requestPurchase to work!
            const productIds = [PRODUCT_ID];
            return IAP.getProducts(productIds);
        })
        .then((prods) => {
            // get already-purchased items
            return getAvailablePurchases();
        })
        .then((purchases) => {
            // continue...
        })
}

Примечание: мой PRODUCT_ID соответствует тексту в столбце «Идентификатор продукта» в _appstoreconnect -> App Store -> Manage_

Каков «статус» ваших покупок в приложении в _appstoreconnect_?

Извините, @Beamanator, я удалил свои комментарии, чтобы не вызывать путаницы, так как это была проблема с другой областью.

После добавления файла Configuration.storekit я заставил их работать в моем симуляторе и в Testflight! 👍

@rossbulat Удалось ли вам найти решение этой проблемы? У меня проблема как на Android, так и на iOS.

Я не уверен, что это еще известно (я не видел этого, упомянутого выше): я обнаружил, что продолжаю получать Error: UNKNOWN_ERROR когда запускаю npx react-native run-ios с терминала, но когда Я запускаю приложение из xcode, покупка в приложении (с помощью storekit) работает нормально.

"react-native": "0.61.4",
"react-native-iap": "^4.6.3",

xcode v12
macos 10.15.7

Это нормально со мной
"react-native": "0.63.2",
"react-native-iap": "^5.1.3",
xcode v12
macos 11.0.1

так он работал в режиме отладки, но не в тестовом полете. Была бы у него другая конфигурация?

Я все еще получаю ту же «Неизвестную ошибку» на iOS.

"react-native": "^0.63.4",
"react-native-iap": "^5.2.0",

Xcode 12.2

Есть идеи решить эту проблему без использования конфигурации StoreKit?

Я все еще получаю ту же «Неизвестную ошибку» на iOS.

"react-native": "^0.63.4",
"react-native-iap": "^5.2.0",

Xcode 12.2

Есть идеи решить эту проблему без использования конфигурации StoreKit?

Какую версию симулятора вы использовали?
Та же проблема с iOS 14.2 и отлично работает с iOS 13.5.

То же самое со мной при запуске на симуляторе iOS 14.2 и отлично работает с симулятором iOS 13.x.

И у меня такая же проблема с командой проверки Apple, я думаю, они запускают мое приложение на симуляторе ...

Мы обнаружили, что в ваших продуктах, покупаемых через приложение, обнаружена одна или несколько ошибок при просмотре на iPad с iOS 14.0.1 через Wi-Fi.

  • Запустил приложение
  • Нажмите на Настройки, вверху слева
  • Нажал на Удалить рекламу
  • Приложение начало загружаться бесконечно

Кто-то здесь уже пробовал публиковать нерасходуемые покупки в приложении в продакшене?

То же самое со мной при запуске на симуляторе iOS 14.2 и отлично работает с симулятором iOS 13.x.

И у меня такая же проблема с командой проверки Apple, я думаю, они запускают мое приложение на симуляторе ...

Мы обнаружили, что в ваших продуктах, покупаемых через приложение, обнаружена одна или несколько ошибок при просмотре на iPad с iOS 14.0.1 через Wi-Fi.

  • Запустил приложение
  • Нажмите на Настройки, вверху слева
  • Нажал на Удалить рекламу
  • Приложение начало загружаться бесконечно

Кто-то здесь уже пробовал публиковать нерасходуемые покупки в приложении в продакшене?

у вас также есть задержки с утверждением цен, и Apple не одобряет вашу заявку, потому что вы не можете купить?

Я провел все свои тесты на реальном устройстве с пользователем песочницы. Все работает для покупки продукта, но Apple отказалась от моей сборки из-за ошибки «НЕИЗВЕСТНЫЙ ПРОДУКТ» в симуляторе (iOS 14).

Я пытаюсь опубликовать эту версию приложения с нерасходуемой покупкой внутри приложения в App Store с октября ...

Я провел все свои тесты на реальном устройстве с пользователем песочницы. Все работает для покупки продукта, но Apple отказалась от моей сборки из-за ошибки «НЕИЗВЕСТНЫЙ ПРОДУКТ» в симуляторе (iOS 14).

Я пытаюсь опубликовать эту версию приложения с нерасходуемой покупкой внутри приложения в App Store с октября ...

Взгляните на нашу проблему.

https://github.com/dooboolab/react-native-iap/issues/1200

Я тоже столкнулся с той же проблемой, и мое приложение было выпущено через три недели.

Я провел все свои тесты на реальном устройстве с пользователем песочницы. Все работает для покупки продукта, но Apple отказалась от моей сборки из-за ошибки «НЕИЗВЕСТНЫЙ ПРОДУКТ» в симуляторе (iOS 14).
Я пытаюсь опубликовать эту версию приложения с нерасходуемой покупкой внутри приложения в App Store с октября ...

Взгляните на нашу проблему.

1200

Я тоже столкнулся с той же проблемой, и мое приложение было выпущено через три недели.

Моя сборка была принята Apple, большое спасибо за вашу помощь !!!

я ответил на это здесь

попробовать на реальном устройстве

Ответ

Имея эту проблему также на симуляторах iOS 14. Было бы неплохо протестировать платежи без использования реального устройства.

Не работает с этой средой

  • Mac 11.2
  • Xcode 12.4
  • Симулятор под управлением iOS 14 и выше

Работа с этой средой

  • Mac 11.2
  • Xcode 12.4
  • Симулятор под управлением iOS 13.7 и ниже

На симуляторе iOS 14 это работает
https://stackoverflow.com/questions/58020258/requesting-an-in-app-purchase-in-ios-13-fails/58065711#58065711

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