2016-02-28 2 views
0

Dans mon application, j'ai un IAP qui supprime la bannière iAd à partir du bas de l'écran. Je réalise cela à travers le code suivant.IAP: Comment enregistrer l'effet de l'achat

func removeAds() { 
    let defaults = NSUserDefaults.standardUserDefaults() 
    defaults.setBool(true, forKey: "productID is here") 
    purchaseButton.alpha = 0.0 
    self.canDisplayBannerAds = false 
    print("iAd removed and default value set") 
    defaults.synchronize() 
    } 
} 

J'ai aussi ce code dans mes autres contrôleurs de vue

let defaults = NSUserDefaults.standardUserDefaults() 
    let showAds = defaults.boolForKey("productID is here") 
    if (showAds) { 
     // User purchsed IAP 
     // Lets remove ads 
     self.canDisplayBannerAds = false 
     print("iAd removed") 
    } else { 
     // IAP not purchased 
     // Lets show some ads 
     self.canDisplayBannerAds = true 
     print("Showing iAd") 
    } 

Lorsque j'acheter avec un utilisateur de test, il est réussi et l'annonce est supprimée de ce contrôleur de vue. Cependant, dès que je quitte la vue d'où j'ai acheté et que je reviens, l'annonce réapparaît. Mon achat est d'un type non-consommable.

Ma question est de savoir comment je fais cette

permanente Merci.

+1

Où est le code que vous avez affiché dans votre deuxième bloc? Si c'est dans viewDidLoad, il ne sera pas exécuté lorsque vous retournerez à un contrôleur de vue qui a été chargé avant l'achat. Essayez-le dans 'viewWillAppear' – Paulw11

+0

Oui c'est dans viewdidload, essayé dans viewwillappear mais aucune annonce n'apparaît, juste l'espace pour cela – Khoury

+0

Vous devez ajuster vos contraintes ou manipuler autrement votre mise en page si vous n'affichez pas la vue de la bannière. Etes-vous conscient que iAd est arrêté dans quelques mois? – Paulw11

Répondre

2

La façon dont vous avez nommé le bool est source de confusion, vous devriez peut-être appeler

let removedAds = .... 

au lieu de

let showAds = ... 

Si vous appelez ce code dans votre viewControllers droit au lancement, je ne vois pas pourquoi il ne fonctionnerait pas.

Etes-vous sûr de ne pas avoir fait une faute de frappe avec les touches pour les paramètres locaux? Vous devez utiliser une struct

struct Key { 
    static let key = "Key1" 
} 

ou

struct ProductID { 
    static let removedAds = "Your removed ads product ID" 
} 

si vous ne faites pas déjà si pour éviter les fautes de frappe.

Y at-il une autre ligne de

self.canDisplayBannerAds = true 

que vous avez oublié de supprimer?

Peut-être poster un peu plus de code de vos contrôleurs de vue afin que nous puissions avoir une idée plus précise de ce qui se passe.

En marge, vous ne devez pas appeler

defaults.synchronize() 

plus depuis iOS 8, de sorte que vous devez supprimer cette ligne.