React-native-iap: RNIap.requestPurchase reagiert nicht in iOS

Erstellt am 13. Mai 2020  ·  11Kommentare  ·  Quelle: dooboolab/react-native-iap

Version von React-native-iap

4.4.8

Version von React-Native

0.61.5

Plattformen, auf denen der Fehler aufgetreten ist (IOS oder Android oder beides?)

iOS

Erwartetes Verhalten

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

ANFRAGE ÜBER gedruckt werden.

Tatsächliches Verhalten

Auf dem Gerät verwende ich das Sandbox-Tester-Konto, es reagiert und funktioniert gut. Aber mit anderen Geräten oder Simulatoren reagiert oder löst es sich nicht. Dies ist wichtig, da Apple während der App-Überprüfung meine Bewerbung immer wieder ablehnt, weil das Tippen auf KAUFEN nicht reagiert.

Es gibt kein Problem mit RNIap.getProducts(itemSkus)

Getestete Umgebung (Emulator? Echtes Gerät?)

Echtes Gerät und Simulator

Schritte zum Reproduzieren des Verhaltens

 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

Hilfreichster Kommentar

Ich hatte das gleiche Problem und der Vorschlag von @Panda313 , await RNIap.initConnection() in componentDidMount hinzuzufügen, funktionierte.
Schade, dass das nicht besser dokumentiert ist...

Alle 11 Kommentare

Auch hier, aber es scheint auf Android zu funktionieren.

Ich habe es vielleicht durch Hinzufügen behoben

konstantes Ergebnis = warte auf RNIap.initConnection();
warte auf RNIap.consumeAllItemsAndroid();
console.log('Ergebnis', Ergebnis);

Am Anfang von componentDidMount ;

Lass mich wissen, ob das hilft

@hyochan Hast du eine Lösung dafür gefunden? Ich habe auch das gleiche Problem in iOS. Es ist äußerst frustrierend, und ich komme nicht über die App-Überprüfung hinaus, weil der Aufruf von RNIap.requestPurchase nicht mit der Warnung antwortet, entweder den Benutzer aufzufordern, den Abonnementbedingungen zuzustimmen oder zu bestätigen, dass das Abonnement bereits aktiv ist. Wenn ich das Schließen der App erzwinge und es erneut versuche, funktioniert es manchmal. Ich weiß nicht, ob es ein Problem mit der Sandbox oder dieser Bibliothek gibt.

@smarttouchtechnology Hast du initConnection angerufen? Dies wird ab 4.4.5 benötigt.

Es kann für @smarttouchtechnology schwierig sein, die Antwort unten zu lesen, die das "Problem" "löst";)

Ich hatte das gleiche Problem und der Vorschlag von @Panda313 , await RNIap.initConnection() in componentDidMount hinzuzufügen, funktionierte.
Schade, dass das nicht besser dokumentiert ist...

@Panda313 ... Du hast mir gerade 1 Woche schlaflose Nacht der Ablehnung von Äpfeln erspart

Könnte jemand dies der Dokumentation hinzufügen, damit nicht mehr Leute auf dieses Problem stoßen? Ich bin mir nicht sicher, wie ich es am besten hinzufügen soll.

EDIT: Hier hinzugefügt. #1088.

Fühlen Sie sich frei, es zu überprüfen (ich bin nicht sicher, ob ich es richtig gemacht habe).

Ich habe es vielleicht durch Hinzufügen behoben

konstantes Ergebnis = warte auf RNIap.initConnection();
warte auf RNIap.consumeAllItemsAndroid();
console.log('Ergebnis', Ergebnis);

Am Anfang von componentDidMount ;

Lass mich wissen, ob das hilft

Für iOS habe ich keine Antwort von requestSubscription erhalten. Ich habe versucht, await RNIap.initConnection(); vor RNIap.requestSubscription hinzuzufügen, und es hat bei mir funktioniert. Jetzt erhalte ich Kaufobjekte in Listenern im Stammverzeichnis der App. Und es fährt auch weiter unten im Code fort, nachdem es entweder als Fehler oder als erfolgreiche Antwort aufgelöst wurde.

Hallo, es sieht so aus, als ob in letzter Zeit keine Aktivität zu diesem Thema stattgefunden hat. Wurde das Problem behoben oder erfordert es noch die Aufmerksamkeit der Community? Dieses Problem kann geschlossen werden, wenn keine weiteren Aktivitäten stattfinden. Sie können dieses Problem auch als "Zur Diskussion" oder "Gutes erstes Problem" kennzeichnen, und ich werde es offen lassen. Vielen Dank für Ihre Beiträge.

Dieses Thema wird nach längerer Inaktivität geschlossen. Wenn dieses Problem in der neuesten Version noch vorhanden ist, können Sie gerne ein neues Problem mit aktuellen Informationen erstellen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen