【发布时间】:2020-05-01 10:38:26
【问题描述】:
我遇到了以下问题:当我的应用程序在设备上运行并点击购买按钮时,它会触发应用内购买机制,最多需要十秒钟才能显示标准确认 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];
}
}
购买产品方法:
- (void)purchaseProduct:(SKProduct *)product
{
if ([SKPaymentQueue canMakePayments])
{
SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
else
NSLog(@"Cannot make purchase");
}
【问题讨论】:
-
用户点击购买按钮后,您在显示警报视图之前执行了哪些活动。请在此处粘贴代码以进行进一步调查。
-
@Abhinav 请查看更新
-
我没有看到“您想购买该商品吗?”的警报视图代码。这里是不是少了一块?
-
@Abhinav 此警报正在从委托方法显示 - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 当刚刚收到来自商店的响应时
-
商店的响应是指服务器的响应。因此,当用户点击“购买”时,您正在向服务器发送一些请求,然后在收到响应后,您将抛出警报视图“您要购买该商品吗?”。如果是这样,你为什么要这样做。可能延迟是在 N/W 调用和服务器响应返回。理想情况下,我想进行异步服务器调用,并立即向用户显示警报。你能告诉我你是否在做与我提到的不同的事情吗?
标签: ios in-app-purchase storekit