ios - SKStoreProductViewController 出现延迟

标签 ios storekit

我在我的应用程序中使用 SKStoreProductViewController。它显示正确,但有几秒钟的延迟,这会降低用户体验。

我的代码有问题吗?或者我应该通知用户 VC 正在加载吗?因为现在人们可以相信在按下按钮后什么都没有发生(这会触发以下代码):

-(void)launchApp:(id)sender {

    // Recall on main thread if necessary
    if (![NSThread isMainThread]) {
        [self performSelectorOnMainThread:@selector(launchApp:)
                               withObject:sender
                            waitUntilDone:NO];
        return;
    }

    // Initialize Product View Controller
    SKStoreProductViewController *storeProductViewController = [[SKStoreProductViewController alloc] init];

    // Configure View Controller
    [storeProductViewController setDelegate:self];
    [storeProductViewController loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier : @"*********"}
                                          completionBlock:^(BOOL result, NSError *error) {
        if (error) {
            NSLog(@"Error %@ with User Info %@.", error, [error userInfo]);
        } else {
            // Present Store Product View Controller
            [self presentViewController:storeProductViewController animated:YES completion:nil];
        }
    }];
}

最佳答案

延迟是因为您在产品加载成功后呈现 viewController。

您可以将调用 presentViewController:animated:completion: 放在产品加载后调用的 block 之外。在这种情况下, Controller 将显示为空,并在产品加载后填充。

类似的东西:

SKStoreProductViewController *storeProductViewController = [[SKStoreProductViewController alloc] init];

// Configure View Controller
[storeProductViewController setDelegate:self];
[storeProductViewController loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier : @364709193}
                                      completionBlock:^(BOOL result, NSError *error) {
    if (error) {
        NSLog(@"Error %@ with User Info %@.", error, [error userInfo]);
    } else {

    }
}];
// Present Store Product View Controller
[self presentViewController:storeProductViewController animated:YES completion:nil];

或者您可以创建一个“弹出式” View ,在 Controller 加载其内容时显示一个事件指示器。

或者你使用[UIApplication sharedApplication].networkActivityIndi​​catorVisible = YES;

有几种方法可以解决这个问题。

关于ios - SKStoreProductViewController 出现延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16546431/

相关文章:

objective-c - UIView 在 iOS 设备上不透明,但在模拟器上是透明的

ios - SKPaymentQueue restoreCompletedTransactions : no transaction restored

ios - 当两次调用相同的方法时,完成处理程序导致 EXC_BAD_ACCESS

ios - 通过itunes connect在app store中保留应用名称

ios - 移动 Safari 本地存储限制

ios - 核心图 - 如何在标绘点上添加值

ios - 如何从我的 PhoneGap 应用打开另一个 iOS 应用?

iphone - StoreKit 沙箱测试不提示登录

iOS In App Purchase非消耗品判断是新购还是恢复

iOS IAP - 如何区分 "restoring done, but not purchased before"状态