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:
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);
}
}
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 2) iTunes Connect -> Accords, Taxe et Opérations bancaires -> Accords principaux -> Applications payées-> Coordonnées/Informations bancaires/Informations fiscales (à remplir) 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)
}
}
}
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"]];
Assurez-vous que l'option d'achat intégré est activée dans la section Fonctions. Sinon, SKProductsRequest renverra 0 produits.
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 :)
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.
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
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
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?
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.
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.
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.
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é.