SKProductsResponse 没有回应应用内购买

Posted

技术标签:

【中文标题】SKProductsResponse 没有回应应用内购买【英文标题】:No response from SKProductsResponse with In App Purchase 【发布时间】:2012-07-18 16:28:02 【问题描述】:

如标题所示,我没有收到 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 所以你知道我已经完成了 Troy Brant 的应用内购买:完整演练和 Ray Wenderlich 的教程

【问题讨论】:

【参考方案1】:

这里有几件事要检查。

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

它在 5.1 sim 中正常工作。这将告诉您是否可以正常拨打电话。

您发布的所有代码在我看来都不错(自动释放?不使用 ARC?),所以我想知道您是否对单例有问题(希望您不会感到受到侮辱 :))。如果单例创建失败,那么其他调用将静默失败。由于您没有存储来自单例共享帮助器的返回,因此您将无法在调试器中检查它。

希望对你有帮助

【讨论】:

我已经尝试过 4.3(因为我不知道该怎么做 x)。在日志中,我得到“4.3 模拟器不适用于 In App Purchase”左右。当我尝试获取我的产品列表时的结果是相同的。在等待响应 20 秒后调用我的超时方法。明天我将调试我的单身人士是否得到您的建议(我一点也不觉得受到侮辱),尽管这可能是分配问题。我没有使用 ARC,因为我使用的是 cocos2d,我觉得使用旧方式更舒服 XD 我多次测试了我的单身人士并没有发现任何可疑之处。我的变量“sharedHelperInstance”只分配了一次并且是正确的......但是最后一次我在模拟器上执行我的应用程序它工作并且我不明白为什么,我没有更改我的代码中的任何内容。我只是尝试在逐步模式和一些调试日志中进行调试......无论如何,现在它工作正常,感谢您的回答。

以上是关于SKProductsResponse 没有回应应用内购买的主要内容,如果未能解决你的问题,请参考以下文章

SKProductsRequest 不会在 Catalyst 应用程序中返回 SKProductsResponse

处理应用内购买

简单的Expressjs应用程序没有回应

我没有收到凌空的回应

应用商店审核中的 IAP 错误,无法重现

聆听并回应 ANR?