-1

RW のチュートリアルを使用して、ユーザーが選択した IAP を購入/購入し、ティックが表示される限り、IAP を実装することができました。また、利用可能な4つのIAPすべてを正常にリストします

私はこれを、よりシンプルで必要なコードが少ない方法で行うことにしました (私が思うに) - ユーザーが Apple がホストするコンテンツをダウンロードできるようにするコードを追加してから、コンテンツをアプリに転送して戻すためのコードを追加するのではなく、選択したビューに

代わりに、アプリ内にコンテンツを埋め込むことを選択し、代わりに、ユーザーがコンテンツ/IAP を購入するまで、適切なビュー コントローラーにリンクされたビュー コントローラーまたはボタンをロックするだけです。ユーザーがコンテンツを購入して IAP をチェックした後、その特定の IAP に関連するビュー コントローラーのロックを解除するように追加したいだけです。

これを達成できるように、これまでにコードに追加するにはどうすればよいですか? 私はアプリ内購入を 4 つ持っています (このコードにリンクする 4 つの個別のビュー コントローラーを意味します)。拡張する必要があるコードは以下のとおりだと思います....

- (void)productPurchased:(NSNotification *)notification {

    NSString * productIdentifier = notification.object;
    [_products enumerateObjectsUsingBlock:^(SKProduct * product, NSUInteger idx, BOOL *stop) {
        if ([product.productIdentifier isEqualToString:productIdentifier]) {
            [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:idx inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
            *stop = YES;
        }
    }];

}

- (void)reload {
    _products = nil;
    [self.tableView reloadData];
    [[SecretsIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) {
        if (success) {
            _products = products;
            [self.tableView reloadData];
        }
        [self.refreshControl endRefreshing];
    }];
}

#pragma mark - Table View

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return _products.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    SKProduct * product = (SKProduct *) _products[indexPath.row];
    cell.textLabel.text = product.localizedTitle;
    [_priceFormatter setLocale:product.priceLocale];
    cell.detailTextLabel.text = [_priceFormatter stringFromNumber:product.price];

    if ([[SecretsIAPHelper sharedInstance] productPurchased:product.productIdentifier]) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        cell.accessoryView = nil;
    } else {
        UIButton *buyButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        buyButton.frame = CGRectMake(0, 0, 72, 37);
        [buyButton setTitle:@"Buy" forState:UIControlStateNormal];
        buyButton.tag = indexPath.row;
        [buyButton addTarget:self action:@selector(buyButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
        cell.accessoryType = UITableViewCellAccessoryNone;
        cell.accessoryView = buyButton;
    }

    return cell;
}

- (void)buyButtonTapped:(id)sender {

    UIButton *buyButton = (UIButton *)sender;
    SKProduct *product = _products[buyButton.tag];

    NSLog(@"Buying %@...", product.productIdentifier);
    [[SecretsIAPHelper sharedInstance] buyProduct:product];

}
4

1 に答える 1

0

これを入力して解決する必要があると思います:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showDetail"]) {
    DetailViewController * detailViewController = (DetailViewController *) segue.destinationViewController;
    SKProduct * product = (SKProduct *) _products[self.tableView.indexPathForSelectedRow.row];
    if ([[RageIAPHelper sharedInstance] productPurchased:product.productIdentifier]) {

        if ([product.productIdentifier isEqualToString:@"it.horizonmedia.testiap.ghesemmo"]) {

            detailViewController.image = [UIImage imageNamed:@"drummer.png"];
            detailViewController.message = @"Bravo che l'hai COMPRATA!!!";
        }


          else if ([product.productIdentifier isEqualToString:@"it.horizonmedia.testiap.prodottotest3"]) {
              detailViewController.message = @"Bravo che l'hai COMPRATA!!!";
              detailViewController.image = [UIImage imageNamed:@"iphonerage.png"];

        } else if ([product.productIdentifier isEqualToString:@"it.horizonmedia.testiap.prodottotest"]) {
            detailViewController.message = @"You made a Good Purchase!";
            detailViewController.image = [UIImage imageNamed:@"iphonerage.png"];


        }
    } else {
        detailViewController.image = nil;
        detailViewController.message = @"Purchase to see comic!";
    }
}

}

チュートリアルで行ったと思われるように、コード内の実際の製品 ID を置き換える必要があることに注意してください。

それがうまくいくかどうか教えてください!

于 2013-08-27T15:31:59.110 に答える