トップ «前の日記(2012-05-16) 最新 次の日記(2012-05-19)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

2012-05-17 [iOS]アプリ内課金(プロダクト情報の取得)

アプリ内課金は、暫くは使わないだろうと考え後回しにしていたのだが、避ける事が出来なくなったようだ。

Store Kitフレームワークを使ったIn-App Purchaseの何が面倒かというと、環境を用意するところだと思う。

今回はサンプル・コードは用意できていない。なぜなら、登録の都合上、弊社の開発中のアプリケーションとしてアプリケーションを制作したからだ。申し訳ない。

iOS Provisioning Portalで、App IDを登録する。

iTunes ConnectのManage Your Applicationsで、アプリケーションを追加する。
Manage In-App Purchasesでプロダクトを追加する。

XcodeのiOSアプリケーションのプロジェクトを生成して、StoreKit.frameworkを追加し、StoreKit/StoreKit.hをimportする。

SKRequestDelegateとSKProductsRequestDelegateの2つのプロトコルに対応させる。

#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>
 
@interface ViewController : UIViewController <SKRequestDelegate, SKProductsRequestDelegate>
 
@end

アプリ内課金に対応しているか確認し、指定したプロダクトIDの情報を取得する。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    if ([SKPaymentQueue canMakePayments]) {
        NSLog(@"ユーザにStoreを表示する");
        [self requestProductData];
    }
    else {
        NSLog(@"購入できないことをユーザに警告する");
    }
}

プロダクトIDの情報取得を要求し、結果を受け取るメソッドは以下のとおり。

- (void)requestProductData
{
    SKProductsRequest *request= [[SKProductsRequest alloc]
                                 initWithProductIdentifiers:
                                 [NSSet setWithObject:<プロダクトID>]];
    request.delegate = self;
    [request start];
}
 
- (void)productsRequest:(SKProductsRequest *)request
     didReceiveResponse:(SKProductsResponse *)response
{
    NSArray *myProduct = response.products;
    NSLog(@"%@", myProduct);
    SKProduct   *skp = [myProduct objectAtIndex:0U];
    NSLog(@"%@", skp.localizedDescription);
}

準備は面倒だが、この程度なら、あっけなく動いた。


トップ «前の日記(2012-05-16) 最新 次の日記(2012-05-19)» 編集