我在我的应用程序中使用了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];
}
}];
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*uch 33
导致延迟是因为您在产品加载后提供了viewController.
您可以将调用presentViewController:animated:completion:放在已加载产品后调用的块之外.在这种情况下,控制器将显示为空,并在产品装入后填充.
这些方面的东西:
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];
Run Code Online (Sandbox Code Playgroud)
或者您可以创建一个"弹出窗口"视图,在控制器加载其内容时显示活动指示器.
或者你使用 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
有几种方法可以解决这个问题.
| 归档时间: |
|
| 查看次数: |
4365 次 |
| 最近记录: |