3

用于应用内购买测试的沙盒是否可能不适用于 iOS,因为它处于测试阶段?它在 iOS 6 模拟器和设备上工作,但在 iOS 7 模拟器或设备上不工作,不断出现无法连接到 iTunes。

代码:

- (void)purchaseRemoveAds
{
    NSLog(@"ITEMS :%@", [IAPShare sharedHelper].iap.productIdentifiers);
    [[IAPShare sharedHelper].iap requestProductsWithCompletion:^(SKProductsRequest* request,SKProductsResponse* response)
     {
         if(response > 0 ) {
             NSLog(@"PRODUCTS: %@", [IAPShare sharedHelper].iap.products);
             if ([[IAPShare sharedHelper].iap.products count] != 0) {
                 SKProduct* product =[[IAPShare sharedHelper].iap.products objectAtIndex:0];

                 [[IAPShare sharedHelper].iap buyProduct:product
                                            onCompletion:^(SKPaymentTransaction* trans){

                                                if(trans.error)
                                                {
                                                    NSLog(@"Fail %@",[trans.error localizedDescription]);
                                                }
                                                else if(trans.transactionState == SKPaymentTransactionStatePurchased) {

                                                    [[IAPShare sharedHelper].iap provideContent:@"RemoveAds"];
                                                    NSLog(@"SUCCESS %@",response);
                                                    NSLog(@"Purchases %@",[IAPShare sharedHelper].iap.purchasedProducts);

                                                    [bannerView_ removeFromSuperview];

                                                    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Success!" message:[NSString stringWithFormat:@"You have successfully purchased %@", product.localizedTitle] delegate:nil cancelButtonTitle:@"OK!" otherButtonTitles: nil];

                                                    [alert show];

                                                }
                                                else if(trans.transactionState == SKPaymentTransactionStateFailed) {
                                                    NSLog(@"Fail");
                                                }
                                            }];//end of buy product
             }
         }
     }];
}
4

2 回答 2

4

根据苹果文档,他们不支持 iOS7 模拟器中的应用内购买。您需要使用设备来测试应用内购买。我不知道为什么也不能使用设备测试应用内购买。
请参考苹果文档。在那个参考iOS模拟器。

于 2013-09-17T05:13:50.937 回答
0

我今天在我的一台旧设备上遇到了类似的问题。我没有从我的产品请求中得到任何产品,而是返回了一系列 0 产品。

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
     NSLog(@"Received products results - count:  %d...", [response.products count]); 
} 

它在其他 2 台设备上工作并返回数据,而这台 iOS5 设备是我的孩子用来玩的设备,所以我想也许有人曾经在这台设备上从商店下载了该应用程序。所以我重新启动了设备,将我的个人帐户从设备上的商店中注销,然后删除了该应用程序,当我从 XCode 5 重新安装该应用程序时,它在沙盒中运行良好。

所以,在我看来,为了提高这些 API 的安全性,有些东西正在发生变化。

于 2013-09-26T15:02:09.920 回答