Behebung eines ungültigen Produkt-ID-Problems bei In-App-Käufen
Dies ist ein follow-up-Frage zu "In-app-Käufe mit MKStoreKit Ausfall: “Problem in iTunes-connect-Konfiguration für Produkt: xxx"
Ich habe ein ähnliches Problem und habe versucht zu tun, sowohl mit und ohne MKStoreKit und eine ähnliche Meldung.
Check-Liste
Mit Dank an: http://troybrant.net/blog/2010/01/invalid-product-ids/
Haben Sie die Option In-App-Käufe für Ihre App-ID?
JA
Haben Sie überprüft, Gelöscht, zum Verkauf für Ihr Produkt?
JA
Haben Sie eingereicht (und ggf. abgelehnt) Ihre Bewerbung binäre?
JA
Hat Ihr Projekt .plist-Bundle-ID-match-deine-App-ID?
JA
Haben Sie generiert und installiert eine neue provisioning-Profil für die neue App-ID?
JA
Sie haben konfiguriert Ihr Projekt code-Zeichen mit dieser neuen provisioning-Profil?
JA
Bauen Sie für das iPhone OS 3.0 oder höher?
JA. iOS4.2.
Sind Sie mit dem vollständigen Produkt-ID, wenn bei der Herstellung einer SKProductRequest?
JA. Auch nur die Produkt-ID selbst ohne die reverse-domain -
Haben Sie wartete mehrere Stunden, da hinzufügen des Produkts zu iTunes Verbinden?
JA. Er sagt "Waiting for review" und hat es in den letzten 4-5 Tagen
Sind Ihre Bankdaten aktiv auf iTunes Connect?
NICHT. Es ist ein client-Projekt und bin nur Tests um zu sehen, ob es funktioniert. Brauche ich eine Bankverbindung, um es zu testen?
EDIT: ich habe dies änderte sich nun. Aber ich sehe nicht ein, warum ich brauchen, um dies zu tun, nur um zu testen sandboxing.
Haben Sie versucht, löschen Sie die app von Ihrem Gerät und installieren?
JA
Ist dein Gerät jailbroken?
KEIN
App-notation korrekt ist
Einige Beispiele, die ich gesehen haben, verwenden Sie diese Schreibweise:
com.domain.APP_ID.PRODUCT_TO_BUY
Aber andere verwenden
com.domain.PRODUCT_TO_BUY
Welche ist richtig?
In meinem code habe ich versucht, mit der vollen Schreibweise und nur die Produkt-ID selbst, aber immer noch das gleiche problem "Ungültige Produkt-id".
Entwickler abgelehnt
App-Bundle (Release) ist auf iTunes Verbinden und ich-haben "- Entwickler abgelehnt" bundle.
Bild:
Warten auf Freigabe?
In meine in-app-Käufe habe ich das 1 Produkt, eine auto-erneuerbare-Abonnement. Es ist frei für Verkauf, es ist aber "Waiting for review" und nicht grün beleuchtet.
Bild:
Habe ich das fast 4-5 Tage her und immer noch gekennzeichnet, als "Waiting for review"??
Frage ich mich, wenn meine app "- Entwickler abgelehnt", ob dies einen Einfluss hat auf "Waiting for review" über eine auto-erneuerbare-Abonnement?
Habe ich nichts geändert in dieser Sache.
Nach den verschiedenen Artikeln, die ich warten 24-48 Stunden, bevor ich ihn benutzen kann?
Aber muss ich warten, bis diese akzeptiert werden oder grün leuchtet, bevor ich es verwenden kann, in meinen Tests?
Bankverbindung
Habe ich nicht gefüllt, jede bank details, denn dies ist eine app für einen Kunden -- muss ich ausfüllen Bankverbindung bevor ich weiter testen?
Nach diesen docs: http://developer.apple.com/library/ios/#technotes/tn2259/_index.html Bankverbindung sind erforderlich?
Muss ich angemeldet sein, in iTunes auf mein Gerät unter einem test-account vor, der die app ausführt?
Frage ich mich, wenn jemand klären kann diese Fragen? Vielleicht ist es genauso einfach, wie das warten für die in-app-Kauf "grün leuchtet", oder vielleicht habe ich eine Stufe verpasst?
Hinweis: Dies geschieht unabhängig davon, ob ich MKStoreKit oder verwenden Sie den code, der folgt.
Dank.
Mein code (dieser ist nicht MKStoreKit version)
#define kMySubscriptionFeature @"uk.co.samplewebsite.myappproject.sub1"
- (void)viewDidLoad
{
[super viewDidLoad];
//Do any additional setup after loading the view from its nib.
self.title = @"Manage Subscriptions";
if ([SKPaymentQueue canMakePayments])
{
//Display a store to the user.
//[MKStoreManager sharedManager];
//NSLog(@"purhcasable = %@", [[MKStoreManager sharedManager] purchasableObjectsDescription] );
[self requestProUpgradeProductData];
}
else
{
//Warn the user that purchases are disabled.
NSString *message = @"In-app purchases are disabled. Please review your settings";
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
[alertView release];
} //end if
}
#pragma mark - StoreKit Delegate
- (void) requestProductData
{
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:kMySubscriptionFeature]];
request.delegate = self;
[request start];
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray *myProduct = [[NSArray alloc] initWithArray:response.products];
for(SKProduct *item in myProduct)
{
NSLog(@"Product title: %@" , item.localizedTitle);
NSLog(@"Product description: %@" , item.localizedDescription);
NSLog(@"Product price: %@" , item.price);
NSLog(@"Product id: %@" , item.productIdentifier);
}
for (NSString *invalidProductId in response.invalidProductIdentifiers)
{
NSLog(@"Problem in iTunes connect configuration for product: %@" , invalidProductId);
}
[myProduct release];
//populate UI
[request autorelease];
}
Edit:
Als ein failsafe, ich habe die Bankverbindung nur für den Fall, aber ich sehe nicht, warum dies würde dazu führen, ein Problem.
Habe ich auch dafür gesorgt, dass ich hochgeladen und abgelehnt, dem neuen release der app-bundle und nicht ad-hoc ein; aber ich weiß nicht ob das einen Unterschied macht.
InformationsquelleAutor der Frage zardon | 2011-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach 2 Tagen des Wartens, das neue app-ids, profile, etc. diese Feste für mich..
Warum die docs sagen, um die volle Kom.iap.isrubbish syntax?
Vielen Dank für Ihre Hilfe
InformationsquelleAutor der Antwort Perry Hart
Ich denke, dass ich es getan habe jetzt. Ich werde einige tests, nur um sicher zu gehen.
Diese nicht akzeptiert werden, nur noch; ich führe einige tests mit verschiedenen storekit-frameworks.
Meine Ausgabe:
Hier ist was ich getan habe.
Habe ich meine Bankverbindung. Ich immer noch nicht denke, das hat nichts zu tun mit ihm, obwohl.
Hinweis. Die app-in-app-Kauf ist immer noch "Waiting for review" und ich habe die Ausgabe oben.
Habe ich ersetzt:
#define kMySubscriptionFeature @"uk.co.somesite.someapp.sub1"
mit:
Werde ich einige tests mit MKStoreKit und mit anderen frameworks zu sehen, wenn es okay ist.
Den code, den ich verwendet ist unten bearbeitet aus Gründen der Sicherheit:
.h-Datei
.m-Datei
InformationsquelleAutor der Antwort zardon
Ich habe gerade herausgefunden, tauschte ich die Produkt-ID und der name der Referenz, wenn ich die in-app-Kauf, so in meinem Fall war ich mit der falschen saite, um zu versuchen und finden Sie das Produkt,... Schwer zu erkennen.
InformationsquelleAutor der Antwort Joris van Liempd iDeveloper
Ich testete die neueste version meines vorhandene, voll funktionsfähige app mit in-app-Kauf, um sicherzustellen, die Funktionalität war immer noch wie erwartet funktioniert, wenn ich begann zu sehen, die Probleme in iTunes connect-Nachricht. Mein problem war (habe ich vergessen), dass MKStoreKit gespeichert werden, ist die Tatsache, dass der Kauf auf meine verschiedenen Geräte " Schlüsselbund, also auch wenn ich mit einem neuen Benutzerkonto, mein keychain registriert wurde das Gerät bereits gekauft haben.
[self removeAllKeychainData] innerhalb MKStoreManager behoben die Probleme.
Hoffe, das spart jemand einige frustration.
InformationsquelleAutor der Antwort user216661
Mein Problem war, ich hatte logged in on Gerät mit echter apple-id. Dann abgemeldet ( Iphone-> Einstellungen -> App-Store -> Meine ID-> Abmelden)
Dann wieder eingesetzt, und Hurra es hat funktioniert.
Danke an alle, die auf web.
InformationsquelleAutor der Antwort Stackhelper