わかりました、私はこれで髪を引き裂いています。無料になるアプリを開発しています (広告といくつかのロックダウン機能付き)。アプリ内購入により、広告が削除され、完全な機能が提供されます。
そこで、製品 ID (com.mydomain.Myapp.fullversion) を渡して SKProductsRequest をセットアップし、'start' を実行します。これは失敗せず、productsRequest:didReceiveResponse: の呼び出しに進みます。ここで、NSLog はresponse.products.count がゼロに等しいことを示しています。問題です!
だから、まず愚かな質問。
Q1. テスト デバイスで Xcode を介してアプリを実行する場合、テスト デバイスはインターネットに接続する必要がありますか (ワイヤレス ON など)、または Xcode を実行している Mac がインターネットに接続されていれば十分ですか? (回答: テスト デバイスに接続する必要があります)。
Q2.これを機能させるにはどうすればよいですか?
以下のすべてを確認しました。
アプリ ID のアプリ内購入を有効にしましたか?:
プロビジョニング ポータルのアプリ ID の下に「bundle_seed_id.com.mydomain.Myapp」があり、「アプリ内購入」が有効になっています。
製品の Cleared for Sale を確認しましたか?:
iTunes Connect でアプリ内購入 'com.mydomain.Myapp.fullversion' を作成しましたが、販売が許可されています。
プロジェクトの .plist バンドル ID はアプリ ID と一致しますか?:
はい、「com.mydomain.Myapp」に設定されています。
新しいアプリ ID の新しいプロビジョニング プロファイルを生成してインストールしましたか?:
はい、「com.mydomain.Myapp」の PP を作成してインストールしました。
この新しいプロビジョニング プロファイルを使用してコード署名するようにプロジェクトを構成しましたか?:
「コード署名 ID」の下にエントリしかありません (CS 資格、CS リソース ルール パス、およびその他の CS フラグはありません)。Automatic Profile Selector > IPhone Developer で設定され、Myapp に自分自身と一致し、Debug > Any SDK および Release > Any iOS SDK に設定されています。
SKProductRequest を作成するときに完全な製品 ID を使用していますか?:
はい、「com.mydomain.Myapp.fullversion」を使用しています。
製品を iTunes Connect に追加してから数時間待ちましたか?:
はい、24 時間待ちました。
銀行の詳細は iTunes Connect で有効ですか?:
はい、有効です。
デバイスからアプリを削除して再インストールしようとしましたか?:
何度も。
ここでの観察: テスト デバイスでは、「iTunes & App Stores」にログインしていません。テスト デバイスで Xcode からアプリを実行すると、ログインするように求められません (テスト ユーザーがセットアップされています)。 iTunes Connect ですぐに使用できます)。したがって、アプリが実行され、SKProductRequest で呼び出しが開始されますが、「iTunes & App Stores」にログインするように求められることはありません。
よろしくお願いします。誰かがアプリ内購入を機能させるのを手伝ってくれることを願っています. バイロン。
更新 1:ここにいくつかのコードがありますが、それがどれだけ役立つかはわかりません。上で述べたように、productsRequest:didReceiveResponse: で製品を返さないことで失敗しています。
最初に私は電話します:
[[MyappIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products)
{
if (success)
{
NSLog(@"SUCCESS - WE HAVE PRODUCTS");
_products = products;
NSLog(@"_products.count = %d", _products.count);
}
else
{
if(products == nil)
{
NSLog(@"FAILED - WE HAVE NO PRODUCTS");
}
}
}];
そのためのコードは次のようになります。
- (void)requestProductsWithCompletionHandler:(RequestProductsCompletionHandler)completionHandler
{
_completionHandler = [completionHandler copy];
NSLog(@"IAPHelper, requestProductsWithCompletionHandler{}, _productIdentifiers = %@", [_productIdentifiers anyObject]);
_productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:_productIdentifiers];
_productsRequest.delegate = self;
[_productsRequest start];
}
「開始」は失敗せず、productsRequest:didReceiveResponse の呼び出しに進みます。
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSLog(@"Loading list of products...");
NSLog(@"iAPHelper, productRequest:didRecieveResponse{}, Products count = %d", response.products.count);
そして、この関数に入るとすぐに、response.products.count がゼロに等しいため失敗しました。
次のデバッグ コードを productRequest:didRecieveResponse{} に追加しました。
for (NSString *invalidProductId in response.invalidProductIdentifiers)
{
NSLog(@"Invalid product id: %@" , invalidProductId);
}
そして、「com.mydomain.Myapp.fullversion」は無効であると述べています。
更新 2:これはもはや冗談ではありません。まだ機能していません!
http://developer.apple.com/library/ios/#technotes/tn2259/_index.htmlを正確にフォローしました。アプリ内購入を作成するときにスクリーンショットをアップロードしたことが問題である可能性があると思いましたが、アプリ内購入を削除し、「スクリーンショットを待機中」の状態であることを確認して再作成することで修正しましたドキュメントに従って。再作成されたアプリ内購入が Apple のサーバーを通過するのを 12 時間以上待ちました。テスト デバイスからアプリを削除しました。テストデバイスでストアからログアウトしていることを確認しました。テストデバイスを再起動しました。Xcode で「クリーン」を実行し、Xcode を再起動しました。Xcode からアプリを実行して、何を推測しますか? 製品 ID が無効です!!!! 助けてください、誰かお願いします、私は頭がおかしくなっています!!!!!