web-dev-qa-db-fra.com

Raisons pour SKProduits Demande de retour de produits?

J'essaie de configurer IAP, mais après avoir appelé pour récupérer les produits à l'aide de SKProductsRequest, le tableau SKProductsResponse au sein de mon délégué compte 0. Voici ma liste de contrôle:

  • Le produit de test a été ajouté à iTunes Connect
  • L'identifiant de bundle du produit correspond à l'identifiant de bundle d'application (et n'utilise pas de caractère générique)
  • L'identifiant de produit défini dans SKProductRequest correspond au produit créé sur iTunes connect.
  • J'ai attendu plusieurs heures depuis la création du produit sur iTunes Connect
  • Les profils d'approvisionnement permettent IAP 
  • A suivi toutes les étapes de divers tutoriels tels que http://troybrant.net/blog/2010/01/in-app-purchases-a-full-walkthrough/ etc.
  • Ont supprimé l'application de l'appareil, relancé Xcode, reconstruit, etc. etc.

D'autres suggestions quant à pourquoi le nombre de produits récupérés est zéro?

Je ne crois pas que ce sera un problème de codage, mais le voici quand même:

…

        NSSet *productIdentifiers = [NSSet setWithObjects:@"redacted", nil];
        self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
        self.productsRequest.delegate = self;
        [self.productsRequest start];

…
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    NSArray *products = response.products;
    NSLog(@"Product count: %d", [products count]);
    for (SKProduct *product in products)
    {
        NSLog(@"Product: %@ %@ %f", product.productIdentifier, product.localizedTitle, product.price.floatValue);
    }
}
41
Gruntcakes

Vérifiez toutes les 3 choses dans la liste ci-dessous
1) Vérifiez vos identificateurs de produit - ils doivent être exactement les mêmes que ceux que vous avez dans votre code et dans iTunes Connect -> Mes applications -> VotreNomApp -> Fonctionnalités -> Achats dans l'application enter image description here 2) iTunes Connect -> Accords, Taxe et Opérations bancaires -> Accords principaux -> Applications payées-> Coordonnées/Informations bancaires/Informations fiscales (à remplir) enter image description here 3) code pour le tester

class ViewController: UIViewController {

    var requestProd = SKProductsRequest()
    var products = [SKProduct]()

    override func viewDidLoad() {
        super.viewDidLoad()

        validateProductIdentifiers()
    }
}

extension ViewController: SKProductsRequestDelegate {

    func validateProductIdentifiers() {
        let productsRequest = SKProductsRequest(productIdentifiers: Set(["candy100", "someOtherProductId"]))

        // Keep a strong reference to the request.
        self.requestProd = productsRequest;
        productsRequest.delegate = self
        productsRequest.start()
    }

    // SKProductsRequestDelegate protocol method
    public func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {

        self.products = response.products

        for invalidIdentifier in response.invalidProductIdentifiers {
            print(invalidIdentifier)
        }

    }
}

25
ua24

Je rencontrais le même problème, résolu en envoyant simplement le nom du produit IAP plutôt que mon identifiant de paquet avant le nom du produit. Voici l'exemple:

fonctionne SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"my_product"]];

plutôt que 

ne fonctionne pas SKProductsRequest *productRequest = [[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@"com.my_site.my_app.my_product"]];

12
Ahsan Ebrahim

Assurez-vous que l'option d'achat intégré est activée dans la section Fonctions. Sinon, SKProductsRequest renverra 0 produits. 

10
Harris

J'ai eu le même problème...

Je change simplement mon identifiant de paquet qui ne correspond pas à un identifiant de paquet iTunes.

Et mon application fonctionne bien :)

9
Vishal16

Au cas où vous l'auriez oublié, la correspondance d'identificateur de produit est sensible à la casse.

Donc, si vous avez créé un produit sur Apple avec un identifiant de type 

com.votreentreprise.produit1

et vous appelez la demande de produit avec un identifiant de produit de 

com.votreentreprise.Produit1

Votre liste sera renvoyée avec zéro produit.

Cela m'a occupé pendant un moment :-)

ps: Dans un projet distinct, j'ai découvert que SKProductsRequest ne commençait à renvoyer des produits qu'après un redémarrage. Donc, si tout échoue, essayez de redémarrer votre Mac.

5
nspire

Allons dans iOS Paramètres> iTunes et App Store et Déconnexion

J'espère que cela vous aidera, je ne sais pas pourquoi: D 

2
Tai Le

Réponse initiale

Avez-vous votre contrat, les banques, etc info setup?

Réponse corrigée

Il semble que je me trompe à ce sujet. Jetez un coup d'œil sur Achat intégré à l'application, SKProduitsDemande de renvoi 0 - Produits encore en cours de révision

1
marco alves

Parfois, il existe des solutions très lourdes à ce type de problèmes. Après des recherches, j'ai trouvé qu'il était parfois utile de supprimer l'application, puis de la réinstaller ( Achat intégré, SKProductsRequest retournant 0 - Produits encore en cours de révision ). Quelle version d'iOS utilisez-vous également?

1
virindh

Veuillez également indiquer si vous avez défini le prix du produit dans iTunesConnect ou non. J'ai raté cela et les produits étaient nuls. J'ai passé toute ma journée à comprendre cela.

1
Desert Rose

Après avoir creusé beaucoup, les étapes suivantes ont résolu le problème suivant: obtenir 0 produit pour SKProductsRequest.

Allez dans Paramètres> Connectez-vous à votre iPhone sur votre appareil iOS. Si vous êtes déjà connecté avec votre identifiant Apple d'origine, appuyez dessus et choisissez Déconnexion . Ensuite, connectez-vous simplement avec les informations d'identification du testeur de sandbox que vous avez créé dans iTunes Connect.

0
Maverick

Je reçois un tableau SKProductsResponse.products vide sur les systèmes some macOS 10.14, tandis que d'autres fonctionnent parfaitement et renvoient la liste valide des IAP actuels pour mon application.

Same app, code identique.
Utilisateur connecté sur le même compte App Store sur les deux ordinateurs.

C'est tout simplement bizarre.

0
ATV

De plus, gardez à l'esprit qu'accepter la cotract des applications payées ne suffit pas. Vous devez également remplir les coordonnées, les coordonnées bancaires et les informations fiscales de cet accord, pour que cela soit considéré comme effectué.

0
Matjan