エンジニア

SKStoreProductViewControllerを試してみる

投稿日:2013年4月26日 更新日:

今回のエンジニアブログを担当させていただきます、山下です。
iOSで他のアプリのインストール画面へ導く便利なクラス、
SKStoreProductViewControllerについてご紹介します。

今までは以下のようにして、AppStoreへ切り替えを行っていました。

NSString *strURL = @"https://itunes.apple.com/jp/app/id574659842";
NSURL *url = [NSURL URLWithString:strURL];
[[UIApplication sharedApplication] openURL:url];

iTunesのURLをopenURLしてあげるだけですね。実装は簡単です。
しかし前述したとおりAppStoreへ切り替わってしまうため、元のアプリに戻ってくるのは若干面倒。

storeproductvc

そこでiOS 6から、SKStoreProductViewControllerというクラスが追加されました。
これはStoreKit.frameworkに含まれています。
これを利用するとAppStoreの画面表示からインストールまで、現在のアプリ内で完結します。
元の画面へ戻るのも左上のキャンセルボタンを押すだけ。とってもユーザフレンドリー。

実装してみる

まずはTargetsにStoreKit.frameworkを追加します。

storekit

次にViewControllerのヘッダファイルでStoreKit.hのインポートとデリゲートの追加を行います。

#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>

@interface ViewController : UIViewController

@end

実際にSKStoreProductViewControllerを表示する実装は以下の通り。
SKStoreProductParameterITunesItemIdentifierでは表示させたいアイテムのIDを指定します。

    SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init];
    storeViewController.delegate = self;

    [self presentViewController:storeViewController animated:YES completion:^() {
        [storeViewController loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier: @"574659842"}
                                       completionBlock:^(BOOL result, NSError *error)
        {
            if (!result) {
                NSLog(@"error");
            }
        }];
    }];

SKStoreProductViewControllerは、完了ボタンが押された時の挙動をデリゲート任せにします。
そのためproductViewControllerDidFinish:を実装し、SKStoreProductViewControllerを閉じる処理を書きます。

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController
{
    [self dismissModalViewControllerAnimated:YES];
}

あと注意点がひとつ。
SKStoreProductViewControllerはリリースビルドでないと購入・インストールをさせてくれないようです。
AppStoreの画面は出せたとしても、インストールまで問題なく進めるかは開発段階では分かりません。
ちょっと不安が残りますが、実装も簡単に出来るため試してみる価値はあると思います!

採用情報

ワンダープラネットでは、一緒に働く仲間を幅広い職種で募集しております。

-エンジニア
-

© WonderPlanet Inc.