我想使用SKStoreProductViewController在我的应用程序中模态地打开App Store。我在网上看了很多例子,人们有两种方法。奇怪的行为与SKStoreProductViewController
SKStoreProductViewController *storeController = [[SKStoreProductViewController alloc] init];
[storeController setDelegate:self];
//set product parameters
//must be a number wrapped in a string
NSDictionary *productParameters = @{ SKStoreProductParameterITunesItemIdentifier : @"36372693196"};
[storeController loadProductWithParameters:productParameters completionBlock:^(BOOL result, NSError *error) {
if (result) {
//show
[self presentViewController:storeController animated:YES completion:nil];
}else {
NSLog(@"ERROR WITH STORE CONTROLLER %@\n", error.description);
//redirect to app store
//[[UIApplication sharedApplication] openURL:[[self class] appStoreURL]];
}
}];
如果我这样做^^没有任何反应。块中的if(result)或else语句永远不会执行。
我也看到人们传递零为完成块,并在此之后模态立即呈现所述视图控制器象下面这样:
SKStoreProductViewController *storeController = [[SKStoreProductViewController alloc] init];
[storeController setDelegate:self];
//set product parameters
//must be a number wrapped in a string
NSDictionary *productParameters = @{ SKStoreProductParameterITunesItemIdentifier : @"36372693196"};
[storeController loadProductWithParameters:productParameters completionBlock:nil];
[self presentViewController:storeController animated:YES completion:nil];
当我呈现视图控制器,所述块中的代码为loadProductWithParameters执行。我非常困惑,在这一点..如果块没有运行,直到我提出后,我如何检查成功或失败。
最后,我读到你应该在后台线程中执行loadProductWithParameters。我也试过这个。第二个选项是唯一一个提出了模式的选项 - 无法连接到来自模拟器和设备的iTunes消息。我已经尝试了多个应用ID。到底是怎么回事?我如何得到这个工作?
如果您传入的标识符对您所在的iTunes商店不正确或无效,则控制器将不执行任何操作。 – kamran619
正确,它将在完成块中显示错误。尝试使用其他标识符,例如495922875,它工作得很好。 – Gerharbo
我有一个问题,它根本没有进入块 - 除非标识符是正确的。这就是解决问题的原因。 – kamran619