SFProductsRequestは常にゼロを返します
-
27-10-2019 - |
質問
私は無料アプリケーションでアプリの購入で実装しようとしています。
iTunes Connect PortalのIn App Purchases Manager内でProductD ID "test1"を作成しました。
次の方法で製品リクエストを行うとき:
- (id)init {
NSSet *productIdentifiers = [NSSet setWithObjects:
@"test1",
nil];
if ((self = [self initWithProductIdentifiers:productIdentifiers])) {
}
return self;
}
- (id)initWithProductIdentifiers:(NSSet *)productIdentifiers
{
if ((self = [super init]))
{
// Store product identifiers
_productIdentifiers = [productIdentifiers retain];
// Check for previously purchased products
NSMutableSet * purchasedProducts = [NSMutableSet set];
for (NSString * productIdentifier in _productIdentifiers)
{
BOOL productPurchased = [[NSUserDefaults standardUserDefaults] boolForKey:productIdentifier];
if (productPurchased)
{
[purchasedProducts addObject:productIdentifier];
NSLog(@"Previously purchased: %@", productIdentifier);
}
NSLog(@"Not purchased: %@", productIdentifier);
}
self.purchasedProducts = purchasedProducts;
}
return self;
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSLog(@"Received products results...");
self.products = response.products;
self.request = nil;
[[NSNotificationCenter defaultCenter] postNotificationName:kProductsLoadedNotification object:_products];
NSLog(@"%d",[self.products count]);
NSEnumerator *e = [self.products objectEnumerator];
id object;
while(object=[e nextObject])
{
NSLog(@"item");
NSLog(@"%s",(char*)object);
}
}
- (void)requestProducts {
self.request = [[[SKProductsRequest alloc] initWithProductIdentifiers:_productIdentifiers] autorelease];
_request.delegate = self;
[_request start];
}
応答は常に0です。私は何が間違っているのかわかりません。このコードはチュートリアルから来ました。アプリの購入に関するドキュメントは非常に混乱する傾向があり、iTunes Connectのプロセス全体が自信を与えません。
アプリの購入が機能するために、アプリケーションはオンラインで販売する必要があると思いました。ただし、アプリの購入には含まれていないことに決めましたが、ReviewのためにiTunesでIn Appを購入することを決めました。レビュープロセス中に、アプリがテストのためにINアプリ購入と連携する必要があるため、アプリケーションは拒否されました。
しかし、製品リストが常にゼロになった場合、アプリ購入でテストするにはどうすればよいですか?
私がすでにそれに夢中になっているので、もっと経験のある人が私にこれについてアドバイスを与えることができるなら!
ありがとう、
よろしくお願いしますが、
ヌノ
解決
この問題に私が見つけた最も一貫したソリューションは、このチェックリストでした。本当に時間がかかり、絶望的である同じ問題に通う人を避けるために、それは広く広がるべきです:
- アプリIDのアプリ内購入を有効にしましたか?
- あなたはあなたの製品の販売のためにクリアされたチェックをチェックしましたか?
- アプリケーションバイナリを提出しました(そしてオプションで拒否しました)?
- プロジェクトの.plistバンドルIDはアプリIDと一致しますか?
- 新しいアプリIDの新しいプロビジョニングプロファイルを生成してインストールしましたか?
- この新しいプロビジョニングプロファイルを使用して、プロジェクトをコードサインに構成しましたか?
- iPhone OS 3.0以上のために構築していますか?
- SkProductrequestを作成するときに、製品IDを使用していますか?
- iTunes Connectに製品を追加してから数時間待ちましたか?
- iTunes Connectの銀行の詳細はアクティブですか? (マーク経由)
- デバイスからアプリを削除して再インストールしてみましたか? (Hector、S3B、Alex O、Joe、およびAlbertoを介して)
- お使いのデバイスはジェイルブレイクされていますか?その場合、IAPが機能するために脱獄を元に戻す必要があります。 (ああ、私の神、ローマ、xfze経由)
- 実際のiTunesアカウントからログアウトしていますか?
- デバイスの再起動を試みましたか?
- あなたはデバイスにいますか? (シミュレータでは動作しません)
クレジットは行きます トロイ・ブラント
他のヒント
ここを見てください、それは私のすべての質問に答えました(そしてフレームワークも使いやすいです:-):
http://blog.mugunthkumar.com/coding/iphone-tutorial-%E2%80%93-in-purchases/
しかし、私はアプリ内購入のもの全体がPITAであると言わざるを得ません - 私のアプリはちょうどリリースされたばかりで、もちろん私はそれをダウンロードして、アプリ内購入画面をチェックしました。どう思いますか、それは完全に空っぽになりました!
読書をした後、すべてが受け入れられ、販売の準備ができていても、アプリ内購入製品はオンラインで利用できるようになるのに時間がかかります - 3時間後に最終的にうまくいきました...
編集:
アプリのアプリ内購入を作成し、iTunes Connectで販売のためにクリアするように設定する必要があります。開発モードでテストできるように、スクリーンショットをまだアップロードする必要はありません。
iTunes Connectで購入にどのように名前を付けましたか?通常、com.companyname.productname.purchasename名を使用し、アプリから要求する名前をまったく同じように使用する必要があります。