2017-07-24 3 views
4

Problem: Unser Problem ist es zu vermeiden, Interstitial-Anzeige zu zeigen, wenn die App durch In-App-Kauf aus dem Apple Store aufwachen.So kaufen Sie In-App direkt aus Apple Store - iOS Storekit

Ich versuche, die neue Funktion von iOS11 zu verwalten, dass die Lage, uns aus dem Apple Store direkt in-App zu kaufen, um die neue StoreKit Funktion Trog:

https://developer.apple.com/documentation/storekit/skpaymenttransactionobserver/2877502-paymentqueue?changes=latest_minor&language=objc

- (BOOL)paymentQueue:(SKPaymentQueue *)queue shouldAddStorePayment:(SKPayment *)payment forProduct:(SKProduct *)product 

Ich habe zwei Fragen:

1- Ich würde gerne wissen, ob wir erkennen können, bevor diese Methode aufgerufen wird, dass In-App aus dem Apple Store in einer der folgenden Funktion durch die

gekauft wird

Parameter launchOptions? :

- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)launchOptions 

2 - Wenn wir JA oder NEIN Rückkehr (und in die Warteschlange ourself die Zahlung hinzufügen) an die

- (BOOL)paymentQueue:(SKPaymentQueue *)queue shouldAddStorePayment:(SKPayment *)payment forProduct:(SKProduct *)product 

wann genau werden wir den neuen In-App-Popup sehen?

Vielen Dank für eine Antwort.

Antwort

1

Sie werden nicht über eine inApp im App Store vor paymentQueue:shouldAddStorePayment:forProduct: benachrichtigt. Es wird auch kein inApp-Popup angezeigt, es sei denn, Ihre App zeigt eins in an.

Das ist das Beste, was ich für Sie vorschlagen können:

ich, dass Sie sofort nach Ihrer Anwendung Start nicht eine Interstitial-Anzeige setzen gehe davon aus - das ist eine sehr gute User Experience nicht wäre. Sie müssen also lediglich verhindern, dass eine Anzeige zwischen dem Zeitpunkt, zu dem Sie wissen, dass der Nutzer etwas gekauft hat, und dem Zeitpunkt, an dem Sie diese Transaktion ausführen, angezeigt wird.

  1. Also dann können Sie eine globale Variable haben BOOL doAllowIntAd die standardmäßig auf YES.
  2. Um herauszufinden, ob der Benutzer eine inApp im App Store gekauft hat, rufen Sie sehr früh in application:(UIApplication *)application didFinishLaunchingWithOptions:[[SKPaymentQueue defaultQueue] addTransactionObserver:yourTransactionObserver];, so dass Ihr Beobachter eingerichtet ist, die inApp aus dem App Store zu erhalten. Dies ist die allererste Sache, die ich in didFinishLaunchingWithOptions: mache.

  3. Wenn paymentQueue:shouldAddStorePayment:forProduct: auf yourTransactionObserver aufgerufen wird, bevor YES Rückkehr gesetzt doAllowIntAd = NO die Anzeige zu halten von der Anzeige.

  4. Wenn StoreKit auf yourTransactionObserver mit der InApp aus dem App Store ruft, verarbeiten Sie es auf die gleiche Weise wie Sie einen Kauf in Ihrer App verarbeitet würden. Beispiel: Für transaction.transactionState==SKPaymentTransactionStatePurchased fügen Sie einfach doAllowIntAd = YES hinzu, nachdem die Transaktion verarbeitet, der Inhalt aktiviert und [yourSKPaymentQueue finishTransaction:] aufgerufen wurde, damit die Interstitial-Anzeige wieder angezeigt werden kann. Natürlich sollten Sie doAllowIntAd nicht nur für SKPaymentTransactionStatePurchased wieder aktivieren, sondern auch für einige andere transactionState. Sie können jedoch festlegen, dass die Anzeige deaktiviert bleibt, wenn beispielsweise die Transaktion zurückgestellt wird.

So, wenn es eine Verzögerung zwischen 3 & 4, wird Ihre Anzeige während dieser Zeit nicht angezeigt werden soll. Sie können experimentieren, um festzustellen, ob es in der Praxis zu Verzögerungen kommt.

Verwandte Themen