LoginSignup
69

More than 5 years have passed since last update.

アプリ内でAppStoreを表示する方法

Posted at

アプリ内でAppStoreの画面を表示する方法をまとめました。
URLスキームでAppStoreアプリを開くのではなく、アプリ内でAppStoreのアプリページを表示する方法です。
他のアプリを紹介したいときに使えます。
iOS6以上のアプリで使用可能です。

product.jpg

アプリのIDの調べ方

iTunesStoreで表示したいアプリのページを表示して、タイトルの部分をコピーするとURLがコピーできます。
例:https://itunes.apple.com/jp/app/doragonkuesutomonsutazu-suparaito/id710247888?mt=8
idから?mt=8までの値である710247888がアプリのIDです。

StoreKit.frameworkの登録

StoreKitフレームワークを登録します。
プロジェクトのTARGETS→Build Phase→Link Binary With Libraryの画面を開き、
+ボタンをタップしてStoreKit.frameworkを選択してください。

skstorekit.jpg

サンプルコード

画面を開いたときにAppStoreの画面を表示するサンプルコードです。

Objective-C

Objective-C

#import "ViewController.h"
#import <StoreKit/StoreKit.h>

@interface ViewController () <SKStoreProductViewControllerDelegate>
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self showSKStoreProductViewController];
}

// アプリ内AppStore画面を表示するメソッド
- (void)showSKStoreProductViewController {
    SKStoreProductViewController *productViewController = [[SKStoreProductViewController alloc] init];
    productViewController.delegate = self;

    [self presentViewController:productViewController animated:YES completion:^() {

        NSString *productID = @"710247888"; // 調べたアプリのID
        NSDictionary *parameters = @{SKStoreProductParameterITunesItemIdentifier:productID};
        [productViewController loadProductWithParameters:parameters
                                         completionBlock:^(BOOL result, NSError *error)
         {
             // 読み込み完了またはエラーのときの処理
             // ...
         }];
    }];
}

// キャンセルボタンが押されたときの処理
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [self dismissViewControllerAnimated:YES completion:nil];
}

@end

Swift

Swift

import UIKit
import StoreKit

class ViewController: UIViewController, SKStoreProductViewControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        showSKStoreViewController()
    }

    func showSKStoreViewController() {
        let productViewController = SKStoreProductViewController()
        productViewController.delegate = self

        presentViewController( productViewController, animated: true, completion: {() -> Void in

            let productID = "710247888" // 調べたアプリのID
            let parameters:Dictionary = [SKStoreProductParameterITunesItemIdentifier: productID]
            productViewController.loadProductWithParameters( parameters, completionBlock: {(Bool, NSError) -> Void in
                // 読み込み完了またはエラーのときの処理
                // ...
                })
            })
    }

    // キャンセルボタンが押された時の処理
    func productViewControllerDidFinish(viewController: SKStoreProductViewController!) {
        dismissViewControllerAnimated( true, completion: nil);
    }
}


裏ワザ:デベロッパーのアプリ一覧を表示する

IDにアプリのIDではなく、デベロッパーのIDを登録することでアプリ一覧を表示することができます。

developer.jpg

注意

しかし、この方法ではFreeやOPENのボタンを押してアプリをインストールすることはできますが、
各アプリのセルをタップしてアプリの画面に遷移できなかったり、フリーズしたり、アプリが落ちたりします。
(iOS7以上。iPhone,iPadどちらもNG。)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
69