React-native-iap: iOS 14:getProducts()未知错误(RN 0.62.2-0.63)

创建于 2020-09-18  ·  50评论  ·  资料来源: dooboolab/react-native-iap

RNIap.getProducts()在最新版本的React Native中似乎已损坏,仅返回未知错误。

版本的react-native-iap

4.6.1

本机版本

0.63.0

您遇到错误的平台(IOS或Android还是两者兼有?)

的iOS

预期行为

要提取的产品。

实际行为

返回未知错误

经过测试的环境(仿真器?真实设备?)

iOS模拟器

重现行为的步骤

只需调用RNIap.getProducts()或RNIap.getSubscriptions()。

📱 iOS 🙏 help wanted

最有用的评论

所有50条评论

运行iOS 14.0的iOS模拟器也遇到了这种情况,但其他模拟器版本(特别是iOS 13.5)没有问题。

对于iOS 14.0模拟器,这似乎是苹果公司的问题: https :

通过以下链接找到了该链接: https :

谢谢@joeyscarim。 我现在已经联系了Apple,并等待他们的反馈。

@rossbulat iOS 14上的相同问题...
react-native-iap - v4.6.1
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)

嗨,大家好,

我们也在经历这种情况。 升级到v4.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工程部门正在通过“反馈助手”调查此案。 当我们确定问题出在什么地方时,我将更新此线程。

我在运行iOS 14.0的iOS模拟器上遇到此问题

同样的问题。 带有xcode 12的iOS 14模拟器无法获取产品并引发未知错误

同样的问题。

苹果评论期间真实设备的相同问题

我有相同的问题,但具有getSubscriptions函数

我做了一些测试,对我来说, [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers]只是返回空...

同一期

IOS端的getSubscriptions存在相同的问题,引发了UNKNOWN_ERROR,Xcode 12.0,react-native 0.62.2

@rossbulat有运气吗? 我也遇到了同样的问题

@rossbulat有运气吗? 我也遇到了同样的问题

您正在使用设备还是模拟器?

您好,开发人员我解决了。 我做了以下

  1. 通过确保状态为有效,我确保我接受了用户协议中的所有条款和条件
  2. 我确保将您应用中“应用内购买”部分中的产品/订阅ID标记为可以提交

PS:我的测试是在本地设备上

该问题仅在iOS 14 Simulator上。 真实的设备可以工作。

苹果在过去一周内保持安静,没有更新与我共享。

对于模拟器,您应该将StoreKit配置文件添加到项目中,然后在运行方案中选择它。 但我在设备上遇到此错误

该问题仅在iOS 14 Simulator上。 真实的设备可以工作。

苹果在过去一周内保持安静,没有更新与我共享。

现在我可能无法在购买的应用中进行测试,因为我找不到在iOS模拟器上添加沙盒测试器的选项

该问题仅在iOS 14 Simulator上。 真实的设备可以工作。

苹果在过去一周内保持安静,没有更新与我共享。

现在我可能无法在购买的应用中进行测试,因为我找不到在iOS模拟器上添加沙盒测试器的选项

由storekit配置文件管理

@ilyasbat我按照以下说明进行操作,清理生成文件夹并重新生成,但不幸的是仍然出现错误。

我通过strorekit配置解决了。
https://stackoverflow.com/questions/58020258/requesting-an-in-app-purchase-in-ios-13-fails/58065711#58065711

添加storekit配置文件,重新构建,现在可以在带有xcode 12的IOS 14模拟器上运行。它运行完美,我实际上可以第一次在模拟器上购买物品。

@ilyasbat此修复程序安全吗? 如果之后我在Appstore中更改产品报价,例如更改价格,会发生什么?它们还会在应用程序中更新吗?还是会被storeConfiguration.storekit配置卡住?

@ilyasbat此修复程序安全吗? 如果之后我在Appstore中更改产品报价,例如更改价格,会发生什么?它们还会在应用程序中更新吗?还是会被storeConfiguration.storekit配置卡住?

找到了这篇非常好的文章:
https://www.appcoda.com/storekit-testing/

从我正在阅读的内容来看,似乎StoreKit配置文件仅用于调试/测试:

下一个字段是应用内购买的价格。 即使App Store Connect中有价格等级,我们仍可以在此处提供任何想要的免费文本值。 价格仅是出于测试原因,不适用于真正的应用内购买,当然也不会收费。 因此,您可以随意设置任何价格。 对于我们在此处配置的特定应用内购买,0.99值就可以了。 价格的货币将是与Simulator的语言环境或任何手动选择的语言环境匹配的货币(我们将在后面讨论)。 因此,0.99可以是美元,欧元,日元等。

我不确定这是否已知(上面没有提到):我发现从终端运行npx react-native run-ios时,我一直得到Error: UNKNOWN_ERROR我从xcode运行应用程序,应用程序内购买(带storekit)工作正常。

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

xcode v12
macOS 10.15.7

因此,目前无法在具有iOS 14的设备上的生产中使用react-native-iap。 由于修复[Error: UNKNOWN_ERROR]的唯一方法是添加Configuration.StoreKit文件,但仅用于测试目的,而不用于生产版本?

有人有其他解决方案吗?

我目前使用此库在生产,Android和iOS(因此,iOS 14)中进行应用内购买。 我能够让用户在TestFlight中成功测试(注意:他们不能使用指纹登录,必须始终提供Apple ID和密码-这是Apple的政策,而不是该库的缺陷),并且一切都在生产中进行。

您是否尝试过在TestFlight @RobinChailley中测试您的应用程序?

我再次在IOS 14.1上使用沙箱帐户使用了2个真实设备,并执行以下操作。

请按照以下步骤创建StoreKit配置,在“运行”方案中选择它,然后构建到您的设备。 不知道是否需要执行此步骤,但要获取一些产品。 您可以在此时进行购买,但是由于购买的transactionId为“ 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_中“产品ID”列中的文本匹配

_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_中“产品ID”列中的文本匹配

_appstoreconnect_中的应用内购买的“状态”是什么?

抱歉@Beamanator我删除了我的评论以避免引起更多混乱,因为这是另一个区域的问题。

添加Configuration.storekit文件后,我让它们在模拟器和Testflight中工作! 👍

@rossbulat您能找到此问题的解决方案吗? 我在Android和ios上都遇到问题。

我不确定这是否已知(上面没有提到):我发现从终端运行npx react-native run-ios时,我一直得到Error: UNKNOWN_ERROR我从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

它在调试模式下是这样工作的,但在testflight中却没有。 它会有不同的配置吗?

我在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验证小组中遇到了同样的问题,我认为他们正在模拟器上运行我的应用...

我们发现,当您在运行Wi-Fi的iOS 14.0.1的iPad上进行审核时,您的应用内购买产品存在一个或多个错误。

  • 启动了应用程序
  • 点击“设置”,左上方
  • 点击删除广告
  • 该应用开始无限期加载

这里有人已经尝试在生产中发布非消耗性应用内购买?

在模拟器iOS 14.2上运行时与我相同,并且可以在模拟器iOS 13.x上正常工作。

我在Apple验证小组中遇到了同样的问题,我认为他们正在模拟器上运行我的应用...

我们发现,当您在运行Wi-Fi的iOS 14.0.1的iPad上进行审核时,您的应用内购买产品存在一个或多个错误。

  • 启动了应用程序
  • 点击“设置”,左上方
  • 点击删除广告
  • 该应用开始无限期加载

这里有人已经尝试在生产中发布非消耗性应用内购买?

您在批准价格方面也有延迟,并且Apple无法批准您的应用程序,因为您无法购买?

我已经用沙盒用户在真实设备上进行了所有测试。 所有产品都可以购买该产品,但是Apple由于模拟器(iOS 14)上的“未知产品”错误而拒绝了我的建造。

自10月以来,我正在尝试将此非消耗性应用内购买的应用版本发布到App Store。

我已经用沙盒用户在真实设备上进行了所有测试。 所有产品都可以购买该产品,但是Apple由于模拟器(iOS 14)上的“未知产品”错误而拒绝了我的建造。

自10月以来,我正在尝试将此非消耗性应用内购买的应用版本发布到App Store。

看看我们的问题。

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

我也遇到了同样的问题,并在三周后发布了我的应用程序。

我已经用沙盒用户在真实设备上进行了所有测试。 所有产品都可以购买该产品,但是Apple由于模拟器(iOS 14)上的“未知产品”错误而拒绝了我的建造。
自10月以来,我正在尝试将此非消耗性应用内购买的应用版本发布到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 等级