应用内购买时间过长,无法显示确认警报视图

问题描述 投票:10回答:3

我遇到以下问题:当我的应用程序在设备上运行并点击“购买”按钮时,这会触发应用程序内购买机制,最多需要十秒钟才能显示标准确认UIAlertView,该消息显示: “你要买吗...”。我以前从未见过这样的行为。通常它会立即发生。因此,首先我认为这可能是由于互联网连接状况不佳或类似原因造成的,但是模拟器使用了相同的WiFi网络,并且运行良好,警报视图可以按原样立即显示。因此问题可能出在其他地方。有人解决了这个问题吗?

这是单击按钮:

- (void)buyItemTapped:(id)sender
{
[[InAppPurchaseManager sharedInstance] buy:[NSString stringWithFormat:@"com.mycompany.myapp.unit%d", [sender tag] + 1]];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(transactionFailed)
                                             name:TRANSACTION_FAILED_NOTIFICATION
                                           object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(productPurchased:)
                                             name:PRODUCT_PURCHASED_NOTIFICATION
                                           object:nil];

}

购买方式:

- (void)buy:(NSString *)identifier
{
SKProduct *product = [self.products objectForKey:identifier];

if (product)
   [self purchaseProduct:product];
else
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                     message:@"Invalid Product Identifier"
                                                    delegate:nil
                                           cancelButtonTitle:@"OK"
                                           otherButtonTitles:nil];

    [alert show];

}
}

purchaseProduct方法:

- (void)purchaseProduct:(SKProduct *)product
{
    if ([SKPaymentQueue canMakePayments])
{
    SKPayment *payment = [SKPayment paymentWithProduct:product];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
 }
  else
      NSLog(@"Cannot make purchase");
}
ios in-app-purchase storekit
3个回答
10
投票

这应该与实际用户尝试购买时的体验无关。发生这种情况是因为您正在沙盒环境中运行该应用程序。实际上,使用模拟器会使它变得更慢。

但是,即使实际用户进行了购买,手机也必须连接到Apple的服务器,找到IAP,然后将IAP数据安全地发送到设备。因此,您可以想像,正常的情况是,有一小段时间才能发送回确认消息。

我建议在SKPaymentTransactionStatePurchasing方法中添加一个加载屏幕,告诉用户您实际上正在获取信息。只需将“购买”按钮更改为“正在购买...”即可。

同样,这是您看到的100%正常现象,但是主要是因为您使用的是沙箱和/或模拟器。 Apple必须先做很多检查,并核实很多事情,然后才能发送回确认消息,因此,您应该至少期待一些微小的延迟(就像从网站上获取信息一样)。


3
投票

您是否在沙盒环境中?如果是这样,那是正常现象。我在中国,在设备上测试IAP总是花费10秒钟以上。我认为这不是您的技术问题。相信自己。:)


1
投票

原因可能是您处于沙盒环境中,偶尔会出现打h。或者您的应用在执行购买时可能会做一些繁重的工作,这会降低设备的速度(但在功能更强大的模拟器上可以快速运行)。

© www.soinside.com 2019 - 2024. All rights reserved.