0

我的应用内购买一直有效,直到昨天,今天我正在提交我的应用以供审核。我所做的唯一更改是在 iTunes 的应用程序页面中,我将我的应用程序(通过检查)与应用程序内购买相关联。

从那时起,每次我尝试在我的调试应用程序中使用我的测试帐户购买东西时,我都会收到此错误:

NSInvalidArgumentException', reason: 'Invalid product identifier: (null)'

我已经:

  1. 重新安装了我的应用
  2. 从我的商店注销并再次使用我的测试帐户

但今天似乎没有任何效果。完全相同的代码昨天运行完美,使用相同的测试帐户。

可能是因为我在itunes中做了这个改变?我担心当我的应用程序获得批准并上线时会发生什么。

任何帮助是极大的赞赏。

编辑:

问题是数组 _products 保持为零。

- (void)reload {
    _products = nil;
    NSLog(@"reload is called");
    [[VimaIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) {
        if (success) {
            _products = products;
            NSLog(@"Success from AppStore");
        }
    }];
    for (SKProduct* product in _products) {
        NSLog(@"In-app item:%@",product.localizedTitle);
    }
}

永远不会调用成功日志消息。昨天我没有问题,使用相同的代码。

编辑:经过多次尝试,它有效。无需改变任何东西。服务器似乎需要很长时间才能响应。但是,我无法购买该产品,因为我获得了"cannot connect to itunes". 为什么会发生这种情况?

编辑2:

在其他尝试中,问题似乎出在以下代码中:

杂注标记 - SKProductsRequestDelegate

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
    
    NSLog(@"Loaded list of products...");
    _productsRequest = nil;
    
    NSArray * skProducts = response.products;
    for (SKProduct * skProduct in skProducts) {
        NSLog(@"Found product: %@ %@ %0.2f",
              skProduct.productIdentifier,
              skProduct.localizedTitle,
              skProduct.price.floatValue);
    }
    
    _completionHandler(YES, skProducts);
    _completionHandler = nil;
    
}

在 for 循环之后。特别是,我得到了一个 BAD_ACCESS :_completionHandler(YES, skProducts);

4

2 回答 2

1

Xcode 5 模拟器的问题已报告但未修复。请参阅描述情况的这篇文章。

于 2013-09-21T19:46:33.730 回答
1

实际上问题在于,在这些日子里,整个 Apple 开发中心都关闭了,所以上面的代码适用于其他正在寻找示例的人。

于 2013-09-21T20:25:57.200 回答