45

基本的に、会社が取り組んでいる適切なアプリに実装する前に、テストアプリでアプリ購入を設定しようとしました。ストアキットのPDFやその他のスニペットを約1000回読みましたが、製品はまだ空として返されます。これが私がこれまでに行ったこととまったく同じです。

テストアプリのセットアップとアプリ内購入のテスト項目iPhoneDevCentre
にある会社の開発者ポータルで「TestAppOne」の新しいアプリIDを作成しました。プレフィックスはcom.mycompany.testappone、アプリ内購入を構成できるようにするためのものであることを確認しました。[アプリID]セクションにとどまり、[アプリ内購入を有効にする]オプションをオンにしてアプリ購入を構成しました。

iTunesConnectで「TestAppOne」を作成し、通常の手順を完了しましたが、「後でバイナリをアップロード」を選択し、アプリが何もしないため、レビューのために送信しませんでした。確かに、これが機能するためにレビューするためにアプリを提出する必要はありませんか?!次に、[アプリの購入で管理]をクリックし、製品IDが「test1」の新しいアプリを作成して承認し、販売が許可されました。

コード
XCodeで新しいプロジェクトを設定しました。これTestAppOneは、現在使用している2つのクラスのみです。

TestAppOneAppDelegate.h:

#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>  

@interface TestAppOneAppDelegate : NSObject <UIApplicationDelegate, SKRequestDelegate, SKProductsRequestDelegate> {
    UIWindow *window;
}

TestAppOneDelegate.m:

#import "TestAppOneAppDelegate.h"

static NSString *kMyFeatureIdentifier1 = @"com.mycompany.testappone.test1";

@implementation TestAppOneAppDelegate
@synthesize window;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
 if([SKPaymentQueue canMakePayments]) {
  NSLog(@"IN-APP:can make payments");
 }
 else {
  NSLog(@"IN-APP:can't make payments");
 }

 [self requestProductData];
 [window makeKeyAndVisible]; 
}

- (void)requestProductData {
 NSLog(@"IN-APP:requestProductData");
 SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:kMyFeatureIdentifier1]];
 request.delegate = self; 
 [request start];
 NSLog(@"IN-APP:requestProductData END");  
} 

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
 NSLog(@"IN-APP:productsRequest");
 NSArray *myProduct = response.products;
 NSLog(@"IN-APP:array count: %i", [myProduct count]);
 [request autorelease];
 NSLog(@"IN-APP:productsRequest END"); 
}

- (void)dealloc {
    [window release];
    [super dealloc];
}

@end

デバイスでの
テストサンドボックステストアカウントを作成し、iPhoneでiTunesアカウントからログアウトしましたが、購入段階でプロンプトが表示されるまでこれを行わないようにドキュメントに記載されているため、テストアカウントでログインしませんでした。次に、アプリをビルドします。取得したログは次のとおりです。

IN-APP:can make payments
IN-APP:requestProductData
IN-APP:requestProductData END
IN-APP:productsRequest
IN-APP:array count: 0
IN-APP:productsRequest END

私がステージを省略したか、または私が間違っていることがあるかどうか誰かに教えてもらえますか?残念ながら、Apple製のサンプルアプリはないようです。

4

10 に答える 10

34

見落とされがちなもう1つの重要なステップは、iTunes接続の「契約、税金、銀行」セクションにあるiOS有料アプリケーション契約の設定があることを確認する必要があることです。最初にリクエストボタンをクリックする必要があり、次に3つの設定ボタン(連絡先情報、銀行情報、税務情報)をクリックする必要があります

于 2011-02-12T07:54:50.507 に答える
24

実際、これを機能させるには、バイナリを送信する必要があると思います。

リリース日は遠い未来に設定できます。

于 2010-01-26T11:19:41.167 に答える
20

無効な製品IDがあるかどうかを確認してください。

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {

for (NSString *invalidProductId in response.invalidProductIdentifiers)
    {
        NSLog(@"Invalid product id: %@" , invalidProductId);
    }
}

無効な製品IDがある場合は、http: //troybrant.net/blog/2010/01/invalid-product-ids/にアクセスしてください。

これは、この問題の非常に包括的なチェックリストです。

編集:(13/11/20)サイトがダウンしているようです。それが永続的な問題であるかどうかはわかりませんが、archive.orgのページを見ることができます: https ://web.archive.org/web/20200212001158/http://troybrant.net/blog/2010/01/ invalid-product-ids /

于 2013-01-16T23:44:48.233 に答える
10

XCodeのバンドル識別子(com.company.appnameなど)がiTunesConnectのものと一致するかどうかを確認します。

バイナリを送信する必要はありません。

于 2013-02-01T02:49:39.617 に答える
6

デバイス上のアプリケーションを削除し、XCodeから再起動するだけです。それは私にとって問題を解決しました。

バイナリをアップロードしたり、iTunesConnectでアプリ内購入を作成してから数時間待つ必要はありません。

于 2012-07-27T14:19:06.563 に答える
3

alpereの回答のおかげで、間違った製品IDを使用していることがわかりました。思った通りではありませんでしde.company.appname.PROFESSIONAL_LICENSEた。PROFESSIONAL_LICENSE私の場合(先頭のバンドルIDを使用せずに)使用するだけで機能します:)

于 2014-04-14T14:21:14.807 に答える
2

InAppPurchaseのサンドボックステスト用にバイナリをアップロードする必要はありません。iTunesConnectにInAppPurchaseアイテムを追加し、「送信準備完了」(必須)状態にするだけです。レビューのために送信すると、常にouresponse.productが空になります。

于 2012-08-31T06:07:44.387 に答える
1

無料サブスクリプション製品を追加してみてください。応答に表示される場合は、コードに問題はありません。無料サブスクリプションは、契約、税金、銀行を必要としない唯一のタイプであり、それが表示され、他のタイプが表示されない場合は、契約に関連する問題です。

于 2016-04-04T00:23:48.640 に答える
0

私の場合、その理由は、Appleによるコンテンツのホスティングが誤ってオンにされたためです。オフにしたときだけ商品が手に入りました

于 2017-08-31T20:38:38.647 に答える
0

私の場合(MacOS)は、テストアプリケーションを作成していました(メインアプリケーションと同じバンドルIDを使用)。SKFetchRequestは、元のアプリケーションと同じバンドル名(バイナリ名)を設定した後でのみ、テストアプリケーションの製品IDの返還を開始しました。

于 2019-07-02T05:14:00.630 に答える