В App Purchase SKProductsRequest не работает, когда приложение уже установлено на устройстве

У меня проблемы с тестированием функции In App Purchase. Если я переустанавливаю приложение на устройство, на котором уже установлено приложение предыдущей версии, SKProductsRequest возвращает ответ только с объектом в invalidProductIdentifiers. Если я удалю приложение с устройства, а затем снова установлю новую версию, SKProductsRequest будет работать нормально.

Любые идеи?

Заранее спасибо.

- (void)requestProductData:(NSString *)aFeatureID {    
    SLLog(@"Products Request For: %@", aFeatureID);
    SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:aFeatureID]];
    request.delegate = self;
    [request start];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    if ([response.products count] > 0) {        
        [self.purchasableObjects addObjectsFromArray:response.products];

#ifndef NDEBUG  
        for(int i=0;i<[self.purchasableObjects count];i++)
        {       
            SKProduct *product = [self.purchasableObjects objectAtIndex:i];
            SLLog(@"Feature: %@, Cost: %f, ID: %@",[product localizedTitle],
                  [[product price] doubleValue], [product productIdentifier]);
        }

        for(NSString *invalidProduct in response.invalidProductIdentifiers)
            SLLog(@"Problem in iTunes connect configuration for product: %@", invalidProduct);
#endif  
        isProductsAvailable = YES;
    } else if ([response.invalidProductIdentifiers count] > 0){
        SLLog(@"MKStoreManager-productsRequest empty results: %@", [response.invalidProductIdentifiers objectAtIndex:0]);
    }
    if([_delegate respondsToSelector:@selector(productFetchComplete)])
        [_delegate productFetchComplete];
    [request autorelease];
}

person mikywan    schedule 29.03.2011    source источник
comment
Кажется, у кого-то была такая же проблема. Пожалуйста, посмотрите на это, если мое описание недостаточно ясно. lists.apple.com/archives/cocoa-dev/2011/ март/msg00349.html   -  person mikywan    schedule 30.03.2011


Ответы (1)


Вот что мне сказали на [email protected]:

Вы подключаетесь к среде Sandbox или рабочей среде?

Я считаю, что вы можете подключиться к песочнице только при запуске через Xcode и, если приложение «обновляется» из версии App Store, оно не вызовет песочницу. По крайней мере, это крошечная часть вуду IAP, свидетелем которой я был... Это означает, что это может перестать быть правдой в любой момент, поскольку настройка IAP находится на расстоянии одного жертвенного ягненка от магии.

Я не уверен в этом на 100%, потому что еще не проверял, но я дам вам знать, как только это сделаю.

person mikywan    schedule 31.03.2011
comment
Да, подтверждено, что при обновлении установки магазина приложений с помощью сборки Xcode продукты не возвращаются. Сводил меня с ума! - person Mark Aufflick; 01.02.2012
comment
Я специально искал эту проблему, и это может быть моим решением. Я прокомментирую позже с результатами. У меня было приложение из App Store на моем iPhone, но не на iPad. Получал недопустимые продукты на iPhone, но не на iPad, но приложения изначально не существовало на iPad. - person Justin; 27.03.2012