在应用程序购买时,SKProductsRequest在设备上已安装App时无法正常工作

时间:2011-03-29 14:33:03

标签: iphone objective-c ipad in-app-purchase

我在测试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];
}

1 个答案:

答案 0 :(得分:6)

有人在Cocoa-dev@lists.apple.com告诉我:

  

您是否正在连接沙盒   环境还是生产?

     

我相信你只能连接到   通过Xcode 启动时的沙盒   如果应用程序正在从“升级”   App Store版本,它不会触发   沙盒。至少,这是一个小小的   我目睹了IAP伏都教的一点点......   这意味着它可能不再是真实的   在任何时候,因为IAP设置是一个   牺牲的羊羔远离了   魔法。

我对此并不确定,因为我还没有测试过,但我会尽快通知您。