2013-05-14 3 views
9

Я нашел следующий код из here получить список товаров из магазина Google PlayGoogle в приложение покупательная получить список продуктов

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

есть способ, чтобы получить динамический список продуктов? здесь его жестко закодировано. Что происходит, когда я добавляю новые продукты после запуска приложения?

+0

Любое обновление по этому поводу? – Caipivara

ответ

29

В настоящее время это невозможно в Google API.

Создайте файл JSON, содержащий текущий SKUs и разместите его на каком-либо сервере.

В вашем приложении сначала загрузите этот файл с URL-адреса сервера, а затем используйте этот список SKUs, чтобы получить информацию о продукте через Google API.

К Google: Предоставить для этого функцию, ПОЛУЧИТЬ ВАС!

+1

Пока не доступен, до настоящего времени 16 окт '15. Позор вам, Google и Apple тоже. lol –

+0

@ Dinh, пожалуйста, дайте ссылку на ссылку, не можете ее найти. – Dusan

+0

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/ShowUI.html#//apple_ref/doc/uid/TP40008267-CH3-SW6 Не существует механизма выполнения для извлечения список всех продуктов, настроенных в iTunes Connect для конкретного приложения. Вы несете ответственность за управление списком продуктов своего приложения и предоставление этой информации в своем приложении. Если вам нужно управлять большим количеством продуктов, рассмотрите возможность использования массовой загрузки и загрузки XML в iTunes Connect. –

6

Если вы не хотите, чтобы реализовать логику, чтобы приобрести список товаров с вашего собственного сервера, другой вариант будет использовать предопределенные идентификаторы «фиктивный» продукта, как слоты ID продукта:

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

Функция getSkuDetails просто вернет null для несуществующих идентификаторов продуктов. Поэтому, если вы не ожидаете, что ваш список продуктов будет меняться слишком часто или слишком сильно, вы можете просто определить небольшое количество идентификаторов продуктов в своем приложении и пропустить значения, возвращаемые getSkuDetails.

Если вы хотите добавить новый продукт, просто используйте идентификатор, определенный следующим неиспользуемым слотом в консоли разработчика, и ваше приложение перечислит его без обновления приложения.

Удаление продукта может быть затруднительным, так как неактивные и удаленные идентификаторы продуктов по-прежнему будут возвращены, поэтому вы можете пометить продукт, удаленный с помощью его поля описания - использовать предопределенную константу, например «NOT AVAILABLE», и проверить ее присутствие в вашем приложении. Если описание продукта равно этой константе, просто пропустите его и не перечислите.

Я знаю, я знаю. Это грязный хак. Но это работает.

+0

Если вы используете вспомогательные классы из примера проекта Google, вы можете запросить продукты, вызывая 'IabHelper.queryInventoryAsync (окончательный булевский запросSkuDetails, окончательный список moreSkus, последний прослушиватель QueryInventoryFinishedListener)' (или синхронную версию, если вы предпочитаете), просто укажите список SKU как параметр mystic 'moreSkus'. В любом случае вам нужно получить ранее приобретенные продукты, поэтому этого избежать сложно. Все еще некрасиво, мягко говоря. – racs

0

Невозможно по этой причине. Если вы смогли получить обновленный список продуктов inapp, как бы вы могли обслуживать эти новые продукты без изменения кода приложения? Если вы измените список продуктов, вам необходимо выпустить обновление для приложения, которое касается новых продуктов.

Единственная причина, чтобы принести новые продукты без изменения кода приложения будет изменять цены на продукцию сами, но это означало бы идти против условий Google & условия

Смежные вопросы