4

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 を試しました。何が起こっている?これを機能させるにはどうすればよいですか?

4

2 に答える 2

3

最初のコードは問題なく動作するはずです。ただし、iPhone Simulator では、iTunes Store がエラーを返すことがよくあります。

iPhone で最初のコードを (他の識別子を使用して) テストしましたが、問題なく動作しSKStoreProductParameterITunesItemIdentifierますが、提供された (36372693196) は正しくないようです。

于 2013-10-09T13:36:29.653 に答える