2013-05-14 9 views
9

fand ich den folgenden Code aus here Produktliste von Google zu erhalten SpeicherGoogle in App-Kauf Produkte erhalten Liste

ArrayList skuList = new ArrayList(); 
skuList.add("premiumUpgrade"); 
skuList.add("gas"); 
Bundle querySkus = new Bundle(); 
querySkus.putStringArrayList(“ITEM_ID_LIST”, skuList); 

spielen, ist es eine Möglichkeit, dynamische Produktliste zu bekommen? Hier ist es hart codiert. Was passiert, wenn ich nach dem Start der App neue Produkte hinzufüge?

+0

Jedes Update über? – Caipivara

Antwort

29

Dies ist derzeit mit Google API nicht möglich.

Erstellen Sie eine JSON Datei, die aktuelle SKUs enthält, und legen Sie sie auf einem Server ab.

Laden Sie in Ihrer App zuerst diese Datei von der Server-URL und verwenden Sie dann diese Liste von SKUs, um Produktdetails über Google API abzurufen.

Zu Google: Stellen Sie Funktion für dieses, SCHANZEN AUF IHNEN zur Verfügung!

+1

Noch nicht verfügbar, bis jetzt 16. Oktober '15. Schande über dich, Google und Apple auch. lol –

+0

@Dinh, bitte geben Sie mir den Link zu der Referenz, kann es nicht finden. – Dusan

+0

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/ShowUI.html#//apple_ref/doc/uid/TP40008267-CH3-SW6 Es gibt keinen Laufzeitmechanismus zum Abrufen Eine Liste aller Produkte, die in iTunes für eine bestimmte App konfiguriert wurden. Sie sind dafür verantwortlich, die Produktliste Ihrer App zu verwalten und diese Informationen für Ihre App bereitzustellen. Wenn Sie eine große Anzahl von Produkten verwalten müssen, sollten Sie die Bulk-XML-Upload-/Download-Funktion in iTunes Connect verwenden. –

6

Wenn Sie die Logik nicht implementieren möchten die Produktliste von Ihrem eigenen Server zu erwerben, wäre eine weitere Option sein vordefinierten „Dummy“ ids Produkt zu verwenden, wie Produkt-ID Slots:

private static final String[] PRODUCTIDS = {"product1", "product2", "product3", etc. }; 

Die Funktion getSkuDetails gibt bei nicht vorhandenen Produkt-IDs einfach null zurück. Wenn Sie also nicht erwarten, dass Ihre Produktliste zu oft oder zu sehr variiert, können Sie einfach eine kleine Anzahl von Produkt-IDs in Ihrer App definieren und Null-Werte überspringen, die von getSkuDetails zurückgegeben werden.

Wenn Sie ein neues Produkt hinzufügen möchten, verwenden Sie einfach die ID, die vom nächsten freien Steckplatz in der Entwicklerkonsole definiert wurde. Ihre App listet sie auf, ohne die App zu aktualisieren.

Das Löschen eines Produkts kann schwierig sein, da inaktive und gelöschte Produkt-IDs immer noch zurückgegeben werden. Sie können also ein gelöschtes Produkt mit seinem Beschreibungsfeld markieren. Verwenden Sie eine vordefinierte Konstante wie "NOT AVAILABLE" Präsenz in Ihrer App. Wenn eine Produktbeschreibung dieser Konstante entspricht, überspringen Sie sie einfach und führen Sie sie nicht auf.

Ich weiß, ich weiß. Es ist ein schmutziger Hack. Aber es funktioniert.

+0

Wenn Sie die Hilfsklassen aus dem Google-Beispielprojekt verwenden, können Sie die Produkte abfragen, indem Sie 'IabHelper.queryInventoryAsync (final boolean querySkuDetails, final List moreSkus, final QueryInventoryFinishedListener Listener)' (oder die synchrone Version, falls Sie dies bevorzugen) eingeben. Gib einfach die Liste der SKUs als den mystischen 'moreSkus' Parameter an. Sie müssen die zuvor gekauften Produkte trotzdem erhalten, daher ist es schwierig, diesen Anruf zu vermeiden. Immer noch hässlich, um es milde auszudrücken. – racs

0

Es ist aus einem Grund nicht möglich. Wenn Sie die aktualisierte inapp-Produktliste abrufen können, wie können Sie diese neuen Produkte bereitstellen, ohne den App-Code zu ändern? Wenn Sie die Produktliste ändern, müssen Sie ein Update für die App veröffentlichen, die sich mit den neuen Produkten beschäftigt.

Der einzige Grund, neue Produkte zu holen, ohne die App-Code ändert sich für die Produkte würden die Preise ändern, aber die gegen die Google Begriffe gehen würde dies bedeuten, & Bedingungen

Verwandte Themen