首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >In-App-Purchase显示确认警报视图的时间太长

In-App-Purchase显示确认警报视图的时间太长
EN

Stack Overflow用户
提问于 2013-11-09 00:24:25
回答 3查看 5.6K关注 0票数 10

我遇到了以下问题:当我的应用程序在设备上运行时,我点击了BUY按钮,这会触发In- app -Purchase机制,它需要10秒才能显示标准的确认UIAlertView,上面会说:“你想买...”。我从来没有见过这样的行为。通常情况下,它会立即发生。因此,首先我认为这可能是由于互联网连接不良或类似的东西,但模拟器使用相同的WiFi网络,它工作得很好,警报视图立即呈现为它应该是的。所以问题可能出在别的地方。有没有人已经解决了这个问题?

这是按钮单击:

代码语言:javascript
复制
- (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];

}

购买方法:

代码语言:javascript
复制
- (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方法:

代码语言:javascript
复制
- (void)purchaseProduct:(SKProduct *)product
{
    if ([SKPaymentQueue canMakePayments])
{
    SKPayment *payment = [SKPayment paymentWithProduct:product];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
 }
  else
      NSLog(@"Cannot make purchase");
}
EN

回答 3

Stack Overflow用户

发布于 2013-11-15 12:28:31

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

然而,即使实际用户进行了购买,手机也必须连接到Apple的服务器,找到IAP,然后将IAP数据安全地发送到设备。因此,正如您可以想象的那样,在发送回确认消息之前有一点时间是正常的。

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

同样,这是您所看到的100%正常,但主要是因为您正在使用沙箱和/或模拟器。苹果在发回确认消息之前必须做很多检查和验证,所以你应该至少会有一些微小的延迟(就像你是从网站上获取信息一样)。

票数 14
EN

Stack Overflow用户

发布于 2013-11-15 12:20:00

您是否处于沙箱环境中?如果是这样,这是正常的情况。我在中国,在设备上测试IAP总是超过10秒。我认为这不是您自己的技术issue.Believe。:)

票数 3
EN

Stack Overflow用户

发布于 2013-11-14 23:28:56

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19863889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档