"react-native-iap": "^2.0.3",
iOS
購入する
const Purchase = await RNIap.buyProductWithoutFinishTransaction(productId)
const {transactionReceipt、purchaseToken} =購入
sendToServer(transactionReceipt、{
onSuccess:()=> {
RNIap.finishTransaction()
RNIap.consumeAllItems()
}})
ダイアログ:「このアプリ内購入はすでに購入されています」。 これは1つのSKUでのみ発生し、他のSKUは正常に機能しています。 アプリの状態が悪く、修正する方法が見当たらないと思います。 初期化時にfinishTransaction
とconsumeAllItems
を呼び出すのに疲れましたが、それでも修正されませんでした。 その他のSKUは問題なく複数回購入できます。 getPurchaseHistory
については何も返されません。
デバイス(サンドボックス)
よく分かりません。
@siderakisうん奇妙だ。 私はすでにstackoverflowで言われているようにこの問題にパッチを当てましたが、それでも一部のデバイスで発生しています。 私もこれを修正したいと思っています。 どのデバイスを使用していますか?
@siderakisこれは私が推測する悪い状態であなたのアプリを解決するかもしれません。 やってみませんか?
試してみましたが、うまくいきませんでした。 私もアプリを再インストールしましたが、それは役に立ちませんでした。 iPadで実行されています。
ブレークポイントを設定しましたが、currentQueue.transactionsが空のようです
SKPaymentQueue.hから
// Array of unfinished SKPaymentTransactions. Only valid while the queue has observers. Updated asynchronously.
@property(nonatomic, readonly) NSArray<SKPaymentTransaction *> *transactions NS_AVAILABLE_IOS(3_0);
<strong i="6">@end</strong>
多分私はそれをあまりにも早く呼んだ
プログラムの実行の後半でコードを呼び出したところ、問題が修正されました。
@siderakisご迷惑を
transactions
配列はプロパティであり、メソッドではなく、コードには含まれていません。
finishTransaction
ですか?
私はこのネイティブコードを呼んでいました。
didFinishLaunchingWithOptions
呼び出すと、currentQueue.transactionsは空でしたが、applicationDidBecomeActiveで呼び出すと機能しました。
これはうまくいきました:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// take current payment queue
SKPaymentQueue* currentQueue = [SKPaymentQueue defaultQueue];
[currentQueue restoreCompletedTransactions];
// finish ALL transactions in queue
// [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
[currentQueue.transactions enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[currentQueue finishTransaction:(SKPaymentTransaction *)obj];
}];
}
方法はわかりませんが、ライブラリでこの機能を公開できるのではないでしょうか。
@siderakisはい。 それが私が第259号で意味したことです。
アクションはapplicationDidBecomeActiveの後のどこにでもできると思います。
そこで、そのメソッドをJS側に公開し、ユーザーがいつでも呼び出すことができるようにします。
アドバイスありがとうございます。
@JJMoon 、私は同じ問題を抱えています、あなたが上で述べたようにメソッドを公開するための解決策をいつ期待できますか? ありがとう。
@sivrihuseyin問題は今よく知られています。 今週末にパッチを作成します。 すべての発行者に感謝します。
期待されるソリューションを2.2.0
でリリースしました。 readmeに従って、このコード行を試して
こんにちはヒョチャン、
情報ありがとうございました。
バージョン2.2.0をインストールして、コードを試しました。 残念ながら、
問題はまだ修正されていません。 関数* clearTransaction *にはない
エクスポートされました。 reactNative環境ではclearTransactionはありません
RNIap内で機能します。
ファイルindex.d.tsを確認しましたが、関数が次のように表示されませんでした。
これでclearTransaction。 ファイル。
敬具、
フセイン
14:25ヒョリチャンチャンの日、2018年9月16日には[email protected]
書きました:
クローズ#257 https://github.com/dooboolab/react-native-iap/issues/257
a5f225d経由
https://github.com/dooboolab/react-native-iap/commit/a5f225d470af0a85417325d24357667e54aa7078
。—
あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/dooboolab/react-native-iap/issues/257#event-1848183078 、
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AiH7bOp96EzsoX82UVxKHK2LkN7PNWVAks5ubjUogaJpZM4WmG_0
。
こんにちはヒョチャン、
間違った情報でごめんなさい。 修正されました。 問題はない
もう。
迅速な対応と優れた解決策をありがとうございます。
敬具、
フセイン
2018年9月16日日曜日午後2時56分HuseyinSivri [email protected]
書きました:
こんにちはヒョチャン、
情報ありがとうございました。
バージョン2.2.0をインストールして、コードを試しました。 残念ながら、
問題はまだ修正されていません。 関数* clearTransaction *が持っていると思います
エクスポートされません。 reactNative環境ではclearTransactionはありません
RNIap内で機能します。ファイルindex.d.tsを確認しましたが、関数が次のように表示されませんでした。
これでclearTransaction。 ファイル。敬具、
フセイン
14:25ヒョリチャンチャンの日、2018年9月16日には[email protected]
書きました:クローズ#257 https://github.com/dooboolab/react-native-iap/issues/257
a5f225d経由
https://github.com/dooboolab/react-native-iap/commit/a5f225d470af0a85417325d24357667e54aa7078
。—
あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/dooboolab/react-native-iap/issues/257#event-1848183078 、
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AiH7bOp96EzsoX82UVxKHK2LkN7PNWVAks5ubjUogaJpZM4WmG_0
。
clearTransaction関数を適用することにより、バージョン2.2.0で修正されています。 ありがとうございました
@JJMoon
v2からv3-5にアップグレードする将来のGoogle社員にとって、これは役に立ちました
最も参考になるコメント
私はこのネイティブコードを呼んでいました。
didFinishLaunchingWithOptions
呼び出すと、currentQueue.transactionsは空でしたが、applicationDidBecomeActiveで呼び出すと機能しました。これはうまくいきました:
方法はわかりませんが、ライブラリでこの機能を公開できるのではないでしょうか。