0

非推奨の API を使用しており、コードを更新して depcreate 以外のコードを使用したいと考えています。

私の大きな質問は、どうすれば応答リストを取得できますか?

- (void) buyFeature:(NSString*) featureId
{
//    SKProduct *myProduct;
    if ([SKPaymentQueue canMakePayments])
    {
        SKPayment *payment = [SKPayment paymentWithProductIdentifier:featureId];
//        SKPayment *payment = [SKPayment paymentWithProduct:myProduct];
        [[SKPaymentQueue defaultQueue] addPayment:payment];
    }
    else
    {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"purchaseDone" object:nil];

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"You are not authorized to purchase from AppStore"
                                                       delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
        [alert show];
        [alert release];
    }
}

- (void) purchase: (int) productIndex {
    [self buyFeature: [aryProductIDs objectAtIndex: productIndex]];
}

aryProductIDs は (id)init の下で定義されます

aryProductIDs = [[NSMutableArray alloc] initWithObjects: @"iap_100OrangeDollars",
                 @"iap_1",
                 @"iap_2",
                 @"iap_1month",
                 @"iap_3month",
                 @"iap_6month",
                 @"iap_12month",
                 @"iap_1lifetime",
                 nil];

myProduct (タイプ SKProduct) に何を使用すればよいかわかりません。

NSMutableArray の代わりに NSSet を使用する多くの例を見てきました。変更する必要があるかどうかわかりません

4

1 に答える 1

1

まず、すべての製品の製品情報を取得する必要があります。

NSSet *productsToRequest = [NSSet setWithArray:aryProductIDs];
SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:productsToRequest];
request.delegate = self;
[request start];

デリゲート コールバックを取得します。応答を使用して辞書を作成することができます。

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    for (SKProduct *product in response.products)
    {
        dict[product.productIdentifier] = product;
    }
    self.products = dict;
}

おそらく、応答を見て、そこにあるかどうかも確認したいでしょうinvalidProductIdentifiersが、これが基本的な考え方です。

于 2015-07-14T17:17:04.343 に答える