Frage

Ich versuche, In-App-Käufe auf meinem iPhone zu testen und in ein Problem laufen, wo der Produkt-IDs I Informationen für Ende fordert bis zurückgegeben mich als ungültig Produkt-IDs in dem „didRecieveResponse“ -Methode.

ich habe:

  • ein im Speicher Produkt Erstellt mit dieser App verbunden. Es ist Bündel ID alles andere passt. Es hat sich zum Verkauf und genehmigt vom Entwickler gelöscht.
  • Made sicher, mein neues Provisioning-Profil hat im Laden App-Käufe aktiviert und es hat den vollen App-Namen: „com.domain.appname“
  • Made sicher, dass dies das Provisioning-Profil verwendet wird, um die App zu meinem iPhone zu unterzeichnen.
  • Made sicher, dass "com.domain.appname" ist die ID-App verwendet, um das Provisioning-Profil zu erstellen.
  • Made sicher, dass "com.domain.appname" in meiner plist-Datei als Bundle-Bezeichner verwendet wird.

Alles scheint an seinem Platz zu sein, aber noch ich meine Produkte zu mir als ungültigem IDs erhalten zurückgegeben.

Dies ist der Code, den ich verwende:


- (void)requestProductData {
   SKProductRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject: @"com.domain.appname.productid"]];
   request.delegate = self;
   [request start];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
   NSArray *myProducts = response.products;
   NSArray *myInvalidProducts = response.invalidProductIdentifiers;

   for(int i = 1; i < myInvalidProducts.count; ++i)
   {
      std::cout <<"invalid product id = " << [[myInvalidProducts objectAtIndex:i] UTF8String] << std::endl;
   }

   for(int i = 0; i  < myProducts.count; ++i)
   {
      SKProduct * myProduct = [myProducts objectAtIndex:i];
      std::cout << "Product Info:"  << std::endl;
      std::cout << "\tlocalizedTitle         = "  << [[myProduct localizedTitle] UTF8String]  << std::endl;
      std::cout << "\tlocalizedDescription   = "  << [[myProduct localizedDescription] UTF8String]  << std::endl;
      std::cout << "\tproductIdentifier      = "  << [[myProduct productIdentifier] UTF8String]  << std::endl;
      std::cout << "\tprice                  = "  << [[myProduct price] doubleValue]  << std::endl;
      std::cout << "\tpriceLocale            = "  << [myProduct priceLocale]  << std::endl;
   }

   [request autorelease];
}

All mein Produkt-IDs zeigt in den ungültigen Ausdrucken und keiner von ihnen in der aufkreuzen up „Produktinfo“. Ausdrucke

Irgendwelche Vorschläge wäre sehr dankbar ...

P. S. Ja, dies ist als Objective-C / C ++ gebaut.

War es hilfreich?

Lösung 7

OK, also nach allem, was ich dabei möglicherweise von und zu lesen jedes Forum da draußen denken konnte, ist hier, was funktioniert hat:

Wiederherstellen everyhing.

  1. Entfernen Sie alle Ihre Provisioning-Profile aus dem Xcode Organizer.
  2. Schließen Xcode.
  3. Erstellen einer neuen App-ID.
  4. Erstellen Sie ein neues Provisioning-Profil mit der neuen App-ID.
  5. Erstellen Sie ein neues Distributions Provisioning-Profil mit der neuen App-ID.
  6. Erstellen Sie eine neue App in iTunes Connect
  7. Starten Sie Xcode, installieren Sie zwei neue Provisioning-Profile. Aktualisieren Sie yoru bündeln ID übereinstimmen. Auch stellen Sie sicher, dass Ihre ID-Strings, die die App-Anforderungen aktualisiert werden Ihre Bündel-ID zu reflektieren.
  8. Erstellen Sie das Projekt im Verteilungsmodus mit dem neuen Distributions Provisioning-Profil.
  9. Laden Sie neue Binär. (Lassen Sie es un-abgelehnt)
  10. Ihr Test in-App-Kauf ein.
  11. Erstellen Sie das Projekt im Debug-Modus mit dem neuen Provisioning-Profil.
  12. Test Anfrage.

Dies ist, was es nahm meinen Speicher zum Laufen zu bringen. Meine beste Vermutung ist, dass die Apple-zurück-Server Ende manchmal bekommen vermasselt und Sie müssen nur von Grund auf neu starten.

Hoffe, das hilft allen!

Andere Tipps

Ich habe versucht, alles in den Foren von Apple vorgeschlagen und hier und konnte immer noch nicht daran zu arbeiten. Gefunden die Lösung - Ihre App muss von Xcode übertragen werden für die Sandbox aktiviert werden

.

Offensichtliche, nicht wahr? Nun, wenn Sie mit einem Update zu einem bestehenden Konto arbeiten, wird das Gerät noch behandelt sie als App Store installiert App.

Löschen Sie es, dann es erneut übertragen. Es sollte funktionieren jetzt:)

Löschen der App auf dem iPhone Testen und Neuinstallation es funktionierte. Ich hatte auch warte auch 8 Stunden seit dem In-App-Kauf Artikel einreichen.

Bitte Gehen Sie durch die folgenden Schritte:

  1. Melden Sie sich bei iTunes verbinden Sie Ihren Entwickler-Konto ( https: // itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wo/ ).

  2. Gehen Sie auf die Registerkarte - "Verträge, Steuern, und Banking"

  3. Überprüfen Sie die Anfrage Verträge und Verträge in Prozessabschnitte.

  4. Schauen Sie sich die "iOS Paid-Anwendungen" und dort Kontakt Info, Bank Info und Steuer Info werden müssen einrichten.

  5. Wenn "iOS Paid-Anwendungen" Zelle Verträge in Effect Abschnitt bewegen, kann ich Produkte verwenden, um in App-Kauf.

Bitte gehen Sie über den Link unten für weitere Informationen: http://developer.apple.com/library/ios/#technotes /tn2259/_index.html

Bitte beachten Sie, dass, wenn das iPhone jailbroken die AppSync Paketpausen In-App-Kauf vollständig zu testen. AppSync mit Install0us als Abhängigkeit installiert.

Sie müssen nicht iOS wiederherstellen vollständig, nur deinstallieren AppSync in Cydia zu testen In-App-Käufe mit Erfolg .

Alle Tipps aus allen Foren, Tutorials und Kommentare zu fixind ‚ungültig Produkt‘ für mich nicht funktioniert, bis ich AppSync entfernt.

Ich habe ein ähnliches Problem mit einer neuen App wurde mit (v1.0 noch nicht im Speicher freigegeben), dass ich versuche, auch in App-Käufen hinzuzufügen. Ich setzte alles auf, hinzugefügt Produkte usw. und meine Produkte kamen immer wieder als ungültig, wenn ich einen SKProductsRequest tat.

Ich war über den gesamten Prozess zu verzichten, wenn ich einen tangential bezogenen Beitrag auf den Apple-Entwicklerforen sehe. Es schlug die App aus dem Testgerät zu löschen und und einen neuen Build tun + installieren. Das war der Trick.

Nur um sicherzugehen, habe ich versucht, es auf einem anderen Gerät, das mir die gleiche Mühe gab, und es regelte es dort auch.

Es ist nur eine Vermutung, aber ich denke, dass, wenn das Gerät einen Build auf sie hat, die mit einem Provisioning-Profil hergestellt wurden, die erstellt wurde, bevor Sie IAP hinzufügen, müssen Sie diese zu bauen und auf einem frischen setzen entfernen Sie das IAP mit Profil. (Das heißt, einfach die App anstelle ersetzen wird nicht den Trick.)

Wenn nichts falsch in Ihrem Code, irgendwann hat es ungültig productId zurückkehren gerade weil, können Sie eine Zeit über 10 Stunden für Ihre wechselnden Informationen benötigen. zeigt Wirkung. Oder die productId ungültig, weil etwas falsch auf Ihrem Gerät geblieben, so können Sie versuchen, noch einmal mit Ihrer App löschen und bauen Sie es erneut. mit meiner Erfahrung, es hoffentlich hilft.

iTunes Connect-Schnittstelle für IAP wurde kürzlich aktualisiert, dass ungültige verursachen können: Fehler.

Sie können nun ein IAP in iTunes verbinden, ohne den Preis zu Einstellung hinzufügen, die auf USD 0 vorbelegt ist und es lasse Sie den Eintrag speichern.

Die alte Version des UI würden sich beschweren, wenn Sie drücken sparen, wenn Sie nicht den Preis Feld vorher bearbeiten hat.

Es ist sehr einfach, dieses Feld vollständig zu verzichten und jeder Versuch, Informationen unter Verwendung dieses Produkt ID über einen beliebigen iOS Anruf ungültig würde zu bekommen: anstatt Sie sagen, es gefunden zum Preis von USD 0 .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top