2011-12-08 9 views
5

¿Existe alguna manera de utilizar las compras en la aplicación de modo que NO estén disponibles en los EE. UU. Y, al mismo tiempo, averiguar si están disponibles o no, y si no es así, realizar tareas especiales para los clientes de EE. UU. quien no puede usarlos?¿Es posible implementar compras en la aplicación solo para un subconjunto de países?

+0

Definitivamente puede publicar varias versiones de una aplicación con diferentes AppID para diferentes países. Pero me gustaría ver una respuesta real también. :) – bealex

+0

He oído rumores de que Apple podría rechazar "clonar aplicaciones" por cualquier razón. – dontWatchMyProfile

+0

Creo que puedes hablar con Apple sobre esto. No deben ser clones, sino la misma aplicación. En cada tienda debe haber solo uno de ellos. La detección de ubicación a veces no es aceptable. :) – bealex

Respuesta

2

Usted podría utilizar CLLocationManager para encontrar la ubicación del usuario y luego usar MKReverseGeocoder de averiguar en qué país están en.

Algunas personas no permitir el acceso a la información de ubicación. Como medida de seguridad se podría utilizar el lenguaje que el dispositivo actual está en (pero hay algunos problemas obvios con este enfoque):

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes 

Entonces sólo tiene que utilizar una sentencia condicional:

if(in USA){ 
    do whatever, don't allow in-app purchases 
} else { 
    allow in app purchases 
} 
+0

O bien: Si los servicios de ubicación no funcionan/están deshabilitados, trátelos como si el usuario estuviera en EE. UU. Buena idea. – dontWatchMyProfile

0

Tal vez podría enviar una solicitud de producto en segundo plano, y solo mostrar el botón de compra si algo vuelve a aparecer. El inconveniente es que podría haber problemas (interrupciones de la tienda, problemas de red, que se lleve el producto temporalmente) que harían que la solicitud del producto fallara, por lo que tendría que diseñar la IU alternativa de forma adecuada.

SKProductsRequest *productRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:productId]]; 
productRequest.delegate = self; 
[productRequest start]; 


-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { 
    if ([[response products] count] > 0) { 
     // display purchase link 
    } else { 
     // display alternative UI 
    } 
} 
Cuestiones relacionadas