使用In App Purchase时,SKProductsResponse没有回复

时间:2012-07-18 16:28:03

标签: iphone objective-c ios in-app-purchase itunesconnect

在标题中我没有收到SKProductsResponse的任何回复。

我是怎么做的:

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    //self.tableView.hidden = TRUE;

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(productsLoaded:) name:kProductsLoadedNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(productPurchased:) name:kProductPurchasedNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(productPurchaseFailed:) name:kProductPurchaseFailedNotification object: nil];

    Reachability *reach = [Reachability reachabilityForInternetConnection]; 
    NetworkStatus netStatus = [reach currentReachabilityStatus];    
    if (netStatus == NotReachable) 
    {        
        progressHud = [InAppProgressHud showHUDAddedTo:self.navigationController.view animated:YES];
        progressHud.labelText = @"Pas de connection internet";
        progressHud.detailsLabelText = @"Activez votre 3G ou le WIFI et rééssayez";
        //[self performSelector:@selector(dismissHUD:) withObject:nil afterDelay:3.0];
    } 
    else 
    {        
        if ([InAppPurchaseSingleton sharedHelper].Products == nil) 
        {
            [[InAppPurchaseSingleton sharedHelper] requestProducts];
            progressHud = [InAppProgressHud showHUDAddedTo:self.navigationController.view animated:YES];
            progressHud.labelText = @"Chargement...";
            [self performSelector:@selector(timeout:) withObject:nil afterDelay:30.0];
        }
    }
}

我的要求:

-(void)requestProducts 
{
    self.request = [[[SKProductsRequest alloc]initWithProductIdentifiers:productIdentifiers] autorelease];
    request.delegate = self;
    [request start];
}

响应回调:

-(void)productsRequest:(SKProductsRequest *)requestLocal didReceiveResponse:(SKProductsResponse *)response 
{  
    self.products = response.products;

    for (SKProduct *prod in self.Products)
    {
        NSLog(@"Product title: %@" , prod.localizedTitle);
        NSLog(@"Product description: %@" , prod.localizedDescription);
        NSLog(@"Product price: %@" , prod.price);
        NSLog(@"Product id: %@" , prod.productIdentifier);
    }
    self.request = nil;    
   [[NSNotificationCenter defaultCenter] postNotificationName:kProductsLoadedNotification object:products];    
}

问题是回调永远不会被调用,我没有回复,没有任何反应。我甚至没有得到错误日志,没有什么=(

- >我知道互联网连接正常

- >我尝试使用ios 5.1模拟器,在设备上使用,并且我在两者中都有相同的结果

- >我已从Itunes connect

注销

- >我的应用程序BundleId:fr.eamdev.testapp

- >版本:准备上传中的0.2

- >我有3个IAP:fr.eamdev.testapp.package_1,fr.eamdev.testapp.package_2,fr.eamdev.testapp.package_3 //非消费//清除待售:是//准备提交

有没有人有想法,我在这里安静地贬低TT.TT 所以你知道我已经通过特洛伊布兰特的应用内购买:一个完整​​的演练和雷文德利奇的tuto

1 个答案:

答案 0 :(得分:1)

以下是一些要检查的事项。

试试4.3 sim。 当我在4.3 sim上调用它时,我在日志中收到一条错误消息: 2012-07-18 18:45:03.501 shadowslide [10598:13703]:在模拟器中立即失败

它在5.1 sim中正常工作。这将告诉您是否正在接听电话。

你发布的所有代码对我来说都很好(自动释放?不使用ARC?),所以我想知道你是否有单身人士的问题(希望你不要感到侮辱:))。如果单例创建失败,则其他调用将以静默方式失败。由于您没有存储单件共享助手的返回,因此您无法在调试器中检查它。

希望这有帮助