我遇到了以下问题:当我的应用程序在设备上运行时,我点击了BUY按钮,这会触发In- app -Purchase机制,它需要10秒才能显示标准的确认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");
}发布于 2013-11-15 12:28:31
这应该与实际用户在尝试购买时的体验无关。这是因为您在沙箱环境中运行应用程序。事实上,使用模拟器会使它变得更慢。
然而,即使实际用户进行了购买,手机也必须连接到Apple的服务器,找到IAP,然后将IAP数据安全地发送到设备。因此,正如您可以想象的那样,在发送回确认消息之前有一点时间是正常的。
我建议在SKPaymentTransactionStatePurchasing方法中添加一个加载屏幕,告诉用户您实际上正在获取信息。这可能很简单,只需将“购买”按钮更改为“购买...”。
同样,这是您所看到的100%正常,但主要是因为您正在使用沙箱和/或模拟器。苹果在发回确认消息之前必须做很多检查和验证,所以你应该至少会有一些微小的延迟(就像你是从网站上获取信息一样)。
发布于 2013-11-15 12:20:00
您是否处于沙箱环境中?如果是这样,这是正常的情况。我在中国,在设备上测试IAP总是超过10秒。我认为这不是您自己的技术issue.Believe。:)
发布于 2013-11-14 23:28:56
一个原因可能是,您处于沙箱环境中,其中偶尔会出现问题。或者,您的应用程序在执行购买时可能会做一些繁重的工作,这会降低设备的运行速度(但在功能更强大的模拟器上运行得更快)。
https://stackoverflow.com/questions/19863889
复制相似问题