React-native-iap: RNIap.requestPurchaseがiOSで応答していません

作成日 2020年05月13日  ·  11コメント  ·  ソース: dooboolab/react-native-iap

react-native-iapのバージョン

4.4.8

react-nativeのバージョン

0.61.5

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

iOS

予想される行動

await RNIap.requestPurchase(sku, false)
console.log('REQUEST OVER') 

印刷するオーバーを要求します。

実際の動作

サンドボックステスターアカウントを使用しているデバイスでは、応答して正常に機能しています。 しかし、他のデバイスやシミュレーターでは、応答も解決もしていません。 アプリのレビュー中、Appleは[購入]をタップした理由で私のアプリケーションを拒否し続けるため、これは非常に重要です。

RNIap.getProducts(itemSkus)については問題ありません

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

実デバイスとシミュレーター

動作を再現する手順

 async componentDidMount() {
    RNIap.getProducts(itemSkus)
      .then((products) => {
        this.setState({ products: products })
      })
      .catch((error) => {
        console.log(error.message)
      })
  }
requestPurchase = async (sku) => {
    try {
      await RNIap.requestPurchase(sku, false)
      console.log('REQUESTED OVER')
    } catch (err) {
      console.warn(err.code, err.message)
    }
}

render() {
 const { products } = this.state
 return (
  <View>
    {products.map((p, i) => { return (
       <TouchableWithoutFeedback onPress={() => this.requestPurchase(p.productId)}>
          <Text> BUY </Text>
       </TouchableWithoutFeedback> ) })}
 </View>)
🚶🏻 stale

最も参考になるコメント

同じ問題が発生し、 componentDidMountawait RNIap.initConnection()を追加するという@ Panda313の提案が機能しました。
残念ながら、これは文書化されていません...

全てのコメント11件

ここでも同じですが、Androidでも動作するようです。

追加して修正した可能性があります

const result = await RNIap.initConnection();
RNIap.consumeAllItemsAndroid();を待つ
console.log( '結果'、結果);

componentDidMountの開始時;

それが役に立ったら教えてください

@hyochanこれに対する解決策を見つけましたか? iOSでも同じ問題が発生しています。 RNIap.requestPurchaseを呼び出しても、ユーザーにサブスクリプション条件への同意を促したり、サブスクリプションが既にアクティブになっていることを確認したりしてもアラートが応答しないため、非常に苛立たしく、過去のアプリレビューを取得できません。 アプリを強制終了して再試行すると、機能する場合があります。 サンドボックスまたはこのライブラリに問題があるかどうかはわかりません。

@smarttouchtechnology initConnectionに電話しましたか? これは4.4.5から必要です。

@smarttouchtechnologyが「問題」を「解決」する以下の答えを読むのは難しいかもしれません;)

同じ問題が発生し、 componentDidMountawait RNIap.initConnection()を追加するという@ Panda313の提案が機能しました。
残念ながら、これは文書化されていません...

@ Panda313 ...あなたはちょうど私を救った1週間の眠れないリンゴ拒絶の夜

より多くの人がこの問題に遭遇しないように、誰かがこれをドキュメントに追加できますか? 追加するのに最適な方法がわかりません。

編集:ここに追加されました。 #1088。

気軽にレビューしてください(私はそれを正しく行ったとは確信していません)。

追加して修正した可能性があります

const result = await RNIap.initConnection();
RNIap.consumeAllItemsAndroid();を待つ
console.log( '結果'、結果);

componentDidMountの開始時;

それが役に立ったら教えてください

iOSの場合、 requestSubscriptionからの応答はありませんでした。 RNIap.requestSubscription await RNIap.initConnection();を追加してみましたが、うまくいきました。 現在、アプリのルートにあるリスナーで購入オブジェクトを受け取っています。 また、エラーまたは正常な応答のいずれかで解決された後、コードをさらに下に進みます。

ねえ、最近この問題に関する活動はなかったようです。 問題は修正されましたか、それともコミュニティの注意が必要ですか? それ以上のアクティビティが発生しない場合、この問題は解決される可能性があります。 この問題に「ディスカッション用」または「良い最初の問題」というラベルを付けることもできます。開いたままにしておきます。 貢献していただきありがとうございます。

長期間使用されなかった後、この問題を解決します。 この問題が最新リリースでも引き続き発生する場合は、最新の情報を使用して新しい問題を作成してください。

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