2012-07-03 20 views
14

Estoy desarrollando una aplicación donde el usuario puede comprar mapas digitales, gráficos, etc. Me gustaría envolver estos en compras en la aplicación. La cuestión es que no sé de antemano cuántos cuadros habrá, ya que los obtengo de otra fuente de la red. Podría haber cientos.En la compra de aplicaciones: agregue dinámicamente elementos no consumibles

Tengo un servidor que periódicamente obtiene los gráficos de esa fuente y los almacena localmente; pueden aparecer nuevos gráficos en el futuro o desaparecer los existentes. Todo esto sin intervención manual.

Existen tres tipos distintos de gráficos.

Mi primera solución fue crear tres artículos consumibles y dejar que el usuario compre estos; esto funcionaba bien, pero desafortunadamente Apple lo rechazó, ya que requieren que los gráficos sean "no consumibles".

Pero no entiendo cómo implementar lo que quiero con el tipo no consumible. Si creo estos tres tipos como no consumibles, y el usuario compra uno, obtendrá todos los demás gráficos de ese grupo de forma gratuita, ya que un artículo no consumible solo se puede comprar una vez.

La única solución que se me ocurre es crear un elemento no consumible para cada gráfico. Pero eso es algo que quiero evitar a toda costa: como es ahora, los gráficos se obtienen periódicamente de la fuente remota sin ningún trabajo manual de mi parte. Me gustaría mantenerlo así. No quiero crear manualmente nuevas compras no consumibles cada vez que aparece un nuevo gráfico.

¿Alguna idea de cómo hacer que esto sea escalable?

Respuesta

18

no puedo explicar completamente hacia fuera para usted con el código, sino que puede manejar este problema de dos maneras:

de divisas. No vende artículos no consumibles como mapas. Usted vende moneda. Con esa moneda compras mapas. Los mapas se alimentan dinámicamente cada vez que el usuario llega al frente de su tienda. De esta forma solo necesita rastrear algunas opciones de compra.

La otra opción: La empresa para la que trabajé configuró esto de manera muy simple. Nuestra aplicación se lanzaría y buscaríamos un script php que nos devolviera las ID de la tienda de aplicaciones que teníamos allí. En ese punto, los verificaríamos y usaríamos las devoluciones válidas. Esta opción nos permitió cambiar nuestras compras en la aplicación a través de iTunes Connect y luego en el guión y todo fue genial.

+0

El modelo de moneda suena interesante, ¿puedes explicarlo un poco más en detalle? ¿La compra de moneda en la aplicación debería ser consumible? Para que tenga un elemento de compra en la aplicación, p. "Moneda de mapa" (consumible) y con eso un usuario puede descargar cualquier mapa del servidor? Me pregunto si eso no circunvalaría por completo las pautas de compra en la aplicación de Apple y lo rechazarían por ese motivo. Gracias –

+0

OK, de acuerdo con las Pautas de revisión de App Store (sección 11.4), usar una moneda integrada en la aplicación está bien siempre que no caduque y se consuma desde la aplicación. Creo que intentaré este camino. Gracias por apuntarme a eso, recompensa otorgada! –

+0

@ThomasWana Curioso saber, ¿esto fue aprobado por Apple? –

2

Creo que su límite en los artículos es algo así como 10.000 o más.

Precrear una gran cantidad de artículos, agregar un código para verificar su sitio web y ver cuál es el número de gráfico más alto y asegurarse de que los usuarios solo puedan comprar los gráficos que tiene.

La aplicación descarga los nombres de los gráficos y el ID de producto correspondiente de su servidor y luego está comprando un producto.

A Apple no le importa si el producto real ya está en la aplicación y se desbloquea con la compra, se descarga de su servidor o se proporciona desde su sitio web.

+0

tenía curiosidad acerca del límite de elementos también. "Para cada aplicación, puede crear hasta 1000 productos de compra en la aplicación por separado" ~ [Guía de configuración de compra en la aplicación para iTunes Connect: configurar un producto] (http://developer.apple.com/library/IOS/documentation) /LanguagesUtilities/Conceptual/iTunesConnectInAppPurchase_Guide/Chapters/CreatingInAppPurchaseProducts.html#//apple_ref/doc/uid/TP40013727-CH3-SW1) –

3

Ya sea que los hayas comprado directamente a través de IAP o mediante algún tipo de "moneda" en la aplicación, podrías simplificar la cantidad de trabajo que necesitarías en el futuro usando un sistema de nombres que garantizaría un mapa único nombre para cada artículo que quieres venderPor ejemplo:

NSString *myMapName = [NSString stringWithFormat:@"%@%@%@%@", app_identifier, map_type, top_left_corner_location, scale]; 

De esta manera si el servidor pasa esa información para un nuevo mapa, hay una manera programática saber cuál es el identificador IAP debe ser- simplemente hacer que sea el valor de la cadena myMapName.

En el caso de que use moneda (que suena más fácil que la opción alternativa, y es lo que parecen estar haciendo muchas aplicaciones grandes) solo tiene que hacer un hash con algunos datos en su mapa para que las personas no puede adivinar el código que está almacenando en su llavero/plist y mágicamente obtiene todos sus mapas sin pagar :)

En el caso de que realmente tenga IAP individuales para cada mapa, lamentablemente tiene que hacer un IAP para cada mapa posible una vez. (Pero puede contratar a un niño para que haga esa parte por el salario mínimo, ¿verdad? Es solo la entrada de datos). Sin embargo, pueden ser conchas básicas, con la información real provista a través de su servidor como se describió anteriormente, una vez que se verifica que el mapa sido comprado

Espero que esto ayude!

5

Este es un mensaje más antiguo, pero sólo tenía la misma pregunta y descubierto ahora hay una manera de proporcionar de forma dinámica los no consumibles como anfitrión de la lista de identificadores de producto en su propio servidor:

Cada producto usted vende en su aplicación tiene un identificador de producto único. Su aplicación utiliza estos identificadores de productos para obtener información sobre los productos de la App Store, como los precios, y para enviar solicitudes de pago cuando los usuarios compran esos productos. Su aplicación puede leer su lista de identificadores de productos de un archivo en su paquete de aplicaciones o buscar desde su servidor.

Si su aplicación tiene una lista fija de productos, como una compra integrada en la aplicación para eliminar anuncios o habilitar la funcionalidad, inserte la lista en el paquete de la aplicación . Si la lista de identificadores de productos puede cambiar sin que su aplicación necesite actualizarse, como un juego que admita niveles adicionales o caracteres, solicite a su aplicación que obtenga la lista de su servidor.

No hay mecanismo de tiempo de ejecución para obtener una lista de todos los productos configurados en iTunes Connect para una aplicación en particular. Usted es responsable para administrar la lista de productos de su aplicación y proporcionar esa información a su aplicación. Si necesita administrar una gran cantidad de productos , considere usar la función de carga/descarga masiva de XML en iTunes Connect.

Apple Developer In-App Purchasing Guide

+1

¡Bien, lo investigaré, gracias! –

Cuestiones relacionadas