SKStoreProductViewController を使用して、アプリ内で App Store をモーダルで開こうとしています。私は Web で多くの例を見てきましたが、これには 2 つの方法があります。
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 (結果) または else ステートメントは実行されません。
また、完了ブロックに nil を渡し、この直後に次のようにビュー コントローラーをモーダルに提示する人もいます。
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 を実行する必要があることを読みました。私もこれを試しました。2 番目のオプションは、モーダルを表示した唯一のオプションです。シミュレーターとデバイスから iTunes に接続できませんというメッセージが表示されます。複数のアプリ ID を試しました。何が起こっている?これを機能させるにはどうすればよいですか?