React-native-iap: 由于“未知类型名称“SKPaymentDiscount”,无法在 iOS 上运行

创建于 2019-04-25  ·  38评论  ·  资料来源: dooboolab/react-native-iap

react-native-iap 的版本

2.4.9

react-native 版本

0.59.5

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

iOS

预期行为

应用程序构建

实际行为

应用程序不构建

测试环境(模拟器?真实设备?)

模拟器

重现行为的步骤

只需 react-native run-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% 确定我会怎么做。 你能指导我为你们设置公关吗? 我不知道修复会是什么

@ndejesus1227你认为你找到了解决这个问题的方法吗?

@hyochan不,我没有。 我已经尝试修复它,但我只知道 JavaScript。 我必须找一个比我更了解 Native 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 解决了这个问题。 谢谢您的帮助!

因此,该软件包将与 $# 2.4.9 #$ 中低于 12 的ios不兼容。 我已经更新了迁移的自述文件

使用 Apple Pay(并且没有弹出窗口)付款是否有效?

如果我们想在生产库中使用,我们需要保持两个版本同步。

我们无法在版本 > 12 或版本 < 12 之间进行选择!

可能有一些我没有得到的东西! 感谢您的工作@hyochan

我有同样的问题 - 现在解决了。 一年多来我没有打开 Xcode。 现在我拿着我的 iphone 6s 并升级到固件 12.3.1; 我的 Mac 仍在“Sierra”上,所以我的 Xcode 安装与最新的 ios 不兼容。 当尝试在连接 macbook 的 iphone 上运行代码时,我收到了这些消息。 然后解决方案:

  • 我将我的 Mac-OS 升级到 10.14.5
  • 我将 Xcode 升级到 10.2.1
  • 我使用 react-native-iap 2.5.5
  • 装有 iOS 12.3.1 的 iPhone 6S
  • 使用 sdk 32.0.0 弹出 expo-project,这意味着基于 0.57 的 expo-modified-react-native

---> 现在一切正常

那么,使用这个库的应用程序在 iOS <12.2 上运行时将无法运行?

它将从 3.0.0

谢谢,将保留在 2.4.8 直到 3.0.0 发布

@DataGreed 现在刚刚发布3.0.0

@hyochan我们仍然可以在 v3.0.0 上看到 SKPaymentDiscount 的问题。

我们缺少什么吗? 我们刚刚更新了 package.json 上的版本,在 xcode 中安装和清理/构建了应用程序。 错误仍然出现。

@danidfm您在ios中的构建目标是什么? 另外,尝试在 $#$2$ 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 版本,但最终忘记了。

我只想说他真的发送他应该验证版本并避免这个问题,但他忘记了。 他的 pull request 不应该被合并到 master

尝试使用 iOS v12.3.1 在 Xcode 中为我的 iPhone 运行项目
同样的错误,使用 react-native-iap v3.2.2。
转到 2.4.8(构建成功)

我认为原因是设备上安装了 iOS 版本

这很奇怪,因为他们中的一些人已经确认构建是好的(我也是)。 如果您在升级时遇到问题,请尝试删除ios/build ,然后重试。

我刚刚尝试构建。 检查IapExample
image

@hyochan感谢您的大力支持!

我刚刚尝试了这个问题中提到的所有提示(在 npm 安装、清理应用程序、删除 ios/build 之前完全删除了 node_modules)。 不幸的是,结合构建目标 11.2 和 react-native-iap v3.2.2,我仍然遇到这个问题。 我还尝试降级到 v2.4.8,从而成功构建。 此外,我尝试设置 IapExample,但最终遇到了这个 react-native 问题(https://github.com/facebook/react-native/issues/25252)

我在装有 macOS 10.13 的 iMac 上遇到了同样的问题。 我运行 10.15 的 macbook 运行良好,

也许旧的mac版本不起作用? 🤔

@murilobast不同的 xCode 版本?

检查操作系统版本#if __IPHONE_12_2错误代码块并重建

`#if __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 ,您是如何使用 Xcode 10.1 构建 iOS 项目的?

@liudmyla-schastlyvets 我无法使用 10.1 构建,我必须使用另一台装有 Xcode 最新版本的计算机 :(

反应原生:0.59.0
react-native- iap:2.4.8
代码:10.1
成功建设项目。 谢谢

我也是 ! 维护人员的出色工作!

此页面是否有帮助?
0 / 5 - 0 等级