React-native-iap: PurchaseUpdatedListenerが複数回、場合によっては20回以上呼び出される

作成日 2020年09月08日  ·  12コメント  ·  ソース: dooboolab/react-native-iap

react-native-iapのバージョン

"react-native-iap": "^ 4.5.3"

react-nativeのバージョン

"react-native": "0.62.0"

エラーに直面したプラットフォーム(IOSまたはAndroid、あるいはその両方?)

iOS(Androidでテスト済み)

予想される行動

PurchaseUpdatedListenerは、コンポーネントがマウントされた回数だけ呼び出す必要があります

実際の動作

PurchaseUpdatedListenerは、数秒で20回呼び出されました。アプリを開くと、何度も呼び出されます。

テストされた環境(エミュレーター?実デバイス?)

実際のデバイス、サンドボックス環境

動作を再現する手順

メインページの指示に従ってください

現在、componentDidMount()のリスナーにpurchaseUpdatedListenerがアタッチされていますが、アプリを開くと何度も起動することがあります。 これは、finishTransactionを呼び出したtxnsで発生しています。 誰かがこのようなものを見ていますか?

🕵️‍♂️ need more investigation 🙏 help wanted 🤖 android

最も参考になるコメント

こっちも一緒。 すべての自動更新イベントで、実際の自動更新可能なサブスクリプションを受け取り、数秒後、 purchaseUpdatedListenerから135個の購入オブジェクトの大きなチャンクを受け取ります。 これが私の購入履歴全体だと思います。 finishTransactionfinishTransactionIOS両方を呼び出してトランザクションを消費しようとしましたが、何も変更されません。

次の自動更新イベントでは、トランザクションのその大きなチャンクが増加しています(136、137、...)。 トランザクションは私の自動更新のサブです。 私の消耗品/非消耗品はどれもリストに表示されません。

全てのコメント12件

私も同じですが、購入フローを実際に呼び出します

const { productId } = args
purchaseUpdatedListener(async (purchase) => {
    if (!purchase.transactionReceipt) {
        Alert("Error")
    }
    ...
})
purchaseErrorListener(error => {
    ...
})
await requestPurchase(productId, false)

4つのテスト製品があり、 purchaseUpdatedListener 4回受け取りましたが、購入が要求されたのはそのうちの1つだけでした

それらのトランザクションを終了しようとしましたが、それでも複数の呼び出し

アイテムは自動更新されますか? サンドボックスにあるので、毎月のサブスクリプションの更新期間はわずか5分だと思います。 つまり、アップルは更新のたびにイベントを送信するので、アプリが10分間閉じられた場合、アプリが開いたときに2つの通知が届きます。

購入時だけでなく、自動更新時に通知を受け取るためにこれが予想される動作であることを誰かが確認できますか?

私の購入は1回限りの消耗品です

こっちも一緒。 すべての自動更新イベントで、実際の自動更新可能なサブスクリプションを受け取り、数秒後、 purchaseUpdatedListenerから135個の購入オブジェクトの大きなチャンクを受け取ります。 これが私の購入履歴全体だと思います。 finishTransactionfinishTransactionIOS両方を呼び出してトランザクションを消費しようとしましたが、何も変更されません。

次の自動更新イベントでは、トランザクションのその大きなチャンクが増加しています(136、137、...)。 トランザクションは私の自動更新のサブです。 私の消耗品/非消耗品はどれもリストに表示されません。

ここでも同じですが、購入履歴の購入回数と同じ回数だけリスナーを呼び出すことを確認しました。

問題があります。 サブスクリプションが有効になっている場合にのみ発生します。

私はiOS14でも同様の経験をしました。

私のアプリは自動更新サブスクリプションを販売しています。
同じサブスクリプションを再度購入してから、この問題が発生したと思います。

次のリンクがこの問題に関連している可能性があります。
https://developer.apple.com/forums/thread/659529

この投稿を見てください
問題は、finishTransactionとfinishTransactionIOSがiOSで機能しないことです。これらは常に未定義を返すため、トランザクションを終了できず、保留中のトランザクションでスタックします。 アプリを開くと、保留中のすべてのトランザクションがpurchaseUpdatedListenerで処理されます...そのため、20回以上取得しました。
:(((誰かがこのplsssssssを修正します

この投稿を見てください
問題は、finishTransactionとfinishTransactionIOSがiOSで機能しないことです。これらは常に未定義を返すため、トランザクションを終了できず、保留中のトランザクションでスタックします。 アプリを開くと、保留中のすべてのトランザクションがpurchaseUpdatedListenerで処理されます...そのため、20回以上取得しました。
:(((誰かがこのplsssssssを修正します

https://github.com/dooboolab/react-native-iap/issues/1160#issuecomment -716525603
ここに返信を投稿しましたが、実際にはfinishTransactionはpromiseを解決しないと予想されます。
ログをiOS側に配置して実際にトランザクションが終了することを確認し、 ifステートメントに入力されるかどうかを確認する必要があります。

https://github.com/dooboolab/react-native-iap/issues/1172#issuecomment-721676878で言及されているものと同じものが表示され

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