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-iapおよびReactnativeを使用してreact-nativerun-iosを実行するだけです

これは私が得る正確なエラーです:

/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%わかりません。 y'allのPRを設定する手順を教えていただけますか? 修正がどうなるかわかりません

@ ndejesus1227この問題の解決策を見つけたと思いますか?

@hyochanいいえ、私はしていません。 私はそれを修正しようとしましたが、私はJavaScriptしか知りません。 私よりもネイティブiOSをよく知っている人を助けてくれる人を見つける必要があります

@ ndejesus1227実際、この機能は@renatoalencarによって#455で実装されています。 私は現在これをさらに助けることはできません。

ありがとう、@ hyochan。

@renatoalencarどのバージョンのreactnativeを実行していますか? 今のところ、react-native-iapとRNのどちらをダウングレードする必要があるのか​​わかりません

こんにちは@ ndejesus1227 、それは私にあります、ごめんなさい。 実際に起こっていることは、iOSのバージョンが12.2未満であるということです。 Appleのドキュメントに記載されているように、 SKPaymentDiscountはiOS12.2以降でのみ使用できます。

実際のiOSバージョンを確認することになっていたのですが、忘れてしまいました。

@renatoalencarああ、わかりました。 それは理にかなっている。 いつこれを修正できるかについて何か考えがありますか? あなたはあなたの時間をとることができます、ただ好奇心が強いです

@hyochan @renatoalencarに対応するまで、このアップデートの前のバージョンにダウングレードします

バージョン2.4.11でもこの問題が発生しています。 @hyochanが変更を加える前に機能した唯一のバージョンは、 2.4.8です。

@ggdegreatの説明をありがとう、それで私は2.4.8に行きます!

同じ問題が発生していましたが、2.4.8で問題が修正されたことを確認できます。 助けてくれてありがとう!

したがって、パッケージは2.4.9から12未満のiosと互換性がありません。 移行用のreadmeを更新しました。

Apple Pay(およびポップアップなし)での支払いは機能しますか?

本番ライブラリで使用する場合は、両方のバージョンの同期を維持する必要があります。

ビジネス向けにバージョン> 12またはバージョン<12のどちらかを選択することはできません。

おそらく私が得られないものがあります! よろしくお願いします@hyochan

私は同じ問題を抱えていました-今は解決しました。 1年以上Xcodeを開かなかった。 今、私は私のiphone 6sを取り、ファームウェア12.3.1にアップグレードしました。 私のMacはまだ「Sierra」にあったので、Xcodeのインストールは最新のiOSと互換性がありませんでした。 MacBookに接続されたiPhoneでコードを実行しようとすると、これらのメッセージが表示されます。 次に、解決策:

  • Mac-OSを10.14.5にアップグレードしました
  • Xcodeを10.2.1にアップグレードします
  • 私はreact-native-iap2.5.5を使用しています
  • iOS12.3.1を搭載したiPhone6S
  • sdk 32.0.0で排出されたexpo-project、つまり0.57に基づくexpo-modified-react-native

--->これですべてが機能します

したがって、このライブラリを使用するアプリは、iOS <12.2で実行している場合は機能しませんか?

3.0.0から

おかげで、3.0.0がリリースされるまで2.4.8にとどまります

@DataGreed 3.0.0リリースしました。

@ hyochanv3.0.0でのSKPaymentDiscountの問題を引き続き確認できます。

足りないものはありますか? package.jsonのバージョンを更新し、xcodeでアプリのインストールとクリーンアップ/ビルドを行いました。 エラーは引き続き表示されます。

@danidfm iosでのビルドターゲットは何ですか? また、 npm install $の前に$ node_modulesを完全に削除してみてください

ビルドターゲットは11.0で、node_modulesフォルダーを削除しました。

私と同じ問題– 3.0.0を試しましたが、2.4.8にロールバックしました

(ちなみに、それ以前は3.0.0 RCバージョンを試しましたが、それでも同じエラーが発生しました)

IamExampleプロジェクトをテストして、プロジェクトとの違いを確認していただけませんか。 同じコードを見ることを明確にしたいと思います。

こんにちは@ ndejesus1227 、それは私にあります、ごめんなさい。 実際に起こっていることは、iOSのバージョンが12.2未満であるということです。 Appleのドキュメントに記載されているように、 SKPaymentDiscountはiOS12.2以降でのみ使用できます。

実際のiOSバージョンを確認することになっていたのですが、忘れてしまいました。

彼は文字通りバージョンを確認してこの問題を回避することになっていたと言いたいのですが、彼は忘れていました。 彼のプルリクエストはマスターにマージされるべきではありませんでした

iOSv12.3.1を搭載したiPhone用のXcodeでプロジェクトを実行しようとしています
同じエラー、react-native-iapv3.2.2を使用。
2.4.8への移行(ビルド成功)

理由はiOS版がデバイスにインストールされているからだと思います

これは非常に奇妙なことです。なぜなら、ビルドに問題がないことをすでに確認している人もいるからです(私もそうです)。 アップグレードで問題が発生した場合は、 ios/buildを削除してから、もう一度お試しください。

今、構築してみました。 IapExample確認してください。
image

@hyochanありがとうございました!

この問題で言及されているすべてのヒントを試しました(npmのインストール前にnode_modulesを完全に削除し、アプリをクリーンアップし、ios / buildを削除しました)。 残念ながら、ビルドターゲット11.2およびreact-native-iapv3.2.2と組み合わせてこの問題が発生しています。 また、v2.4.8にダウングレードしてみたところ、ビルドが成功しました。 さらに、IapExampleをセットアップしようとしましたが、このreact-nativeの問題が発生しました(https://github.com/facebook/react-native/issues/25252)

macOS10.13を搭載したiMacでも同じ問題が発生しています。 10.15を実行している私のMacBookは正常に構築されていますが、

たぶん、古いバージョンのMacが機能していませんか? 🤔

@murilobast異なるxCodeバージョン?

OSバージョン#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が必要であり、10.13.6でスタックしている古いiMacではサポートされていないためです。

@ lc3t35 、Xcode 10.1でiOSプロジェクトをどのように構築しましたか?

@ liudmyla-schastlyvets 10.1でビルドできないため、Xcodeの最新バージョンを備えた別のコンピューターを使用する必要がありました:(

反応ネイティブ:0.59.0
react-native- iap: 2.4.8
Xcode:10.1
正常に構築されたプロジェクト。 ありがとう

はい私も ! メンテナからの素晴らしい仕事!

このページは役に立ちましたか?
0 / 5 - 0 評価