2012-02-10 15 views
5

Estoy implementando MKStoreKit en mi aplicación, pero la naturaleza de la aplicación es tal que tendrá que admitir cambios frecuentes y dinámicos en la lista de productos disponibles (no consumibles) para la compra en la aplicación. Por lo tanto, necesito poder consultar regularmente nuestro servidor para obtener la lista actual de ID de productos disponibles, descripciones, etc.¿Implementa la lista de productos dinámicos del servidor con MKStoreKit?

Por lo que puedo entender, MKStoreKit solo admite una plática estática de productos disponibles, lo que significaría que Deberíamos lanzar una actualización de la aplicación cada vez que necesitemos cambiar nuestra lista de productos IAP. Como he mencionado, esto no es posible con este servicio.

¿Alguien sabe de una manera de actualizar nuestra lista de productos IAP mediante la descarga desde el servidor, sin requerir una actualización de la aplicación, utilizando MKStoreKit.

Si no, tengo que imaginar que hay personas que han modificado el código para soportar esto. Si es así, cualquier consejo y sabiduría obtenida sería MUCHO apreciado.

Gracias de antemano.

Respuesta

4

Por lo que yo puedo ver, MKStoreKit recupera la lista de sus productos como un plist en el siguiente método de MKStoreManager.m:

#pragma mark Internal MKStoreKit functions 
//line 201 of MKStoreManager.m 

- (NSDictionary*) storeKitItems 
{ 
    return [NSDictionary dictionaryWithContentsOfFile: 
      [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MKStoreKitConfigs.plist"]]; 
} 

Por lo tanto, si usted acaba de cambiar esta llamada a un método, por ejemplo, para obtener el nuevo elemento de su servidor, puede lograr el resultado que necesita.

Por ejemplo, podría tener un .plist rellenado, y luego moverlo NUSUserDefaults, al igual que un NSDictionary, y, cuando aparezcan los nuevos elementos del servidor, solo debe actualizarlo.

Por lo tanto, el método sería algo como esto:

- (NSDictionary*) storeKitItems 
    { 
    if(![[NSUserDefaults standardUserDefaults]valueForKey:@"NewConfigs"]) 
      [[NSUserDefaults standardUserDefaults]setValue:[NSDictionary dictionaryWithDictionary:[NSDictionary dictionaryWithContentsOfFile: 
                              [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"MKStoreKitConfigs.plist"]]] forKey:@"NewConfigs"]; 
[[NSUserDefaults standardUserDefaults]synchronize]; 

return [[NSUserDefaults standardUserDefaults]valueForKey:@"NewConfigs"]; 
    } 
+0

Gracias Nikita, esto es esencialmente lo que hice. Está en lo cierto, MKStoreKit obtiene su propia información interna, así que acabo de interceptar ese método con un método propio que consulta el servidor (o devuelve una lista interna en caché en caso de que el servidor no esté disponible). – Murdock

Cuestiones relacionadas