-1

私はグーグルを見て回り、アプリ内購入の追加に関するほとんどすべてのスタックオーバーフローの質問を調べましたが、どれも機能していないようです. アプリで購入しようとすると、すべてが正常に機能し、製品が利用可能であり、すべてが利用可能ですが、購入に関するアラート ビューが表示されません。IAP のすべてのコードは次のとおりです。

- (IBAction)tapsRemoveAdsButton{
NSLog(@"User taps remove ads button");
[self tapsRemoveAds];
}

- (void)tapsRemoveAds{
NSLog(@"User requests to remove ads");

if([SKPaymentQueue canMakePayments]){
    NSLog(@"User can make payments");

    SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:kRemoveAdsProductIdentifier]];
    productsRequest.delegate = self;
    [productsRequest start];

}
else{
    NSLog(@"User cannot make payments due to parental controls");
}
}

- (IBAction)purchase{
SKProduct *removeAdsProductID = (SKProduct *)kRemoveAdsProductIdentifier;
SKPayment *payment = [SKPayment paymentWithProduct:(SKProduct *)kRemoveAdsProductIdentifier];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
SKProduct *validProduct = nil;
int count = [response.products count];
if(count > 0){
    validProduct = [response.products objectAtIndex:0];
    NSLog(@"Products Avalable!");
    //[self sloganizeWord];
}
else if(!validProduct){
    NSLog(@"No products avalable");
}
}

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{
for(SKPaymentTransaction *transaction in transactions){
    switch (transaction.transactionState){
        case SKPaymentTransactionStatePurchasing: NSLog(@"Transaction state -> Purchasing");
            break;
        case SKPaymentTransactionStatePurchased: [self doRemoveAds];
            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
             NSLog(@"Transaction state -> Purchased");
            break;
        case SKPaymentTransactionStateRestored:
             NSLog(@"Transaction state -> Restored");
            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
            break;
        case SKPaymentTransactionStateFailed:
            if(transaction.error.code != SKErrorPaymentCancelled){
                NSLog(@"Transaction state -> Cancelled");
            }
            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
            break;
        }
    }
}


- (void)doRemoveAds{
areAdsRemoved = YES;
[[NSUserDefaults standardUserDefaults] setBool:areAdsRemoved forKey:@"areAdsRemoved"];
[[NSUserDefaults standardUserDefaults] synchronize];
}

これを正しく行っている場合、アラート ビューはメソッド「paymentQueue」にすべて表示され、コンソールに次のように表示されます。

user taps remove ads button
user requests to remove ads
user can make payments
products available!

paymentQueue メソッドまでのすべて。ここでもログに記録する必要があります

transaction state -> purchasing

その他、IAP は既に iTunes Connect に設定されており、IAP の ID は正しいです。(そうしないと、利用可能な製品がログに記録されません) iOS7 でジェイルブレイクされていないデバイスを使用していて、すべてのプロビジョニング プロファイルが設定されています (または、少なくとも、広告付きでアプリをアプリ ストアに既に提出しているためだと思います)。 ) 繰り返しますが、私は他のいくつかの質問を見てきましたが、どれも私に何の助けにもならないようです. 助けてくれたすべての人に前もって感謝します:)

4

1 に答える 1