アプリ内にAppStoreをだいたい半分だけ表示してみる

アプリ内にAppStoreを表示するために提供されている`SKStoreProductViewController`を使ってみた。

こちらのサイトを参考にさせていただきました。

参考：
[SKStoreProductViewController](https://developer.apple.com/library/prerelease/ios/documentation/StoreKit/Reference/SKITunesProductViewController_Ref/index.html#//apple_ref/occ/instm/SKStoreProductViewController/loadProductWithParameters:completionBlock:)
[アプリ内でAppStoreを表示する方法](http://qiita.com/Night___/items/4d418305106b7a7d56ea)

## アプリ内AppStore

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

@interface ViewController : UIViewController {
    // AppStore表示用のViewController
    SKStoreProductViewController *productViewController;
}
@end
```

``` ViewController.m
#import "ViewController.h"

@interface ViewController () <SKStoreProductViewControllerDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    productViewController = [[SKStoreProductViewController alloc] init];
    productViewController.delegate = self;
    
    self.modalPresentationStyle = UIModalPresentationFormSheet;
    
    [self presentViewController:productViewController animated:YES completion:^() {
        
        NSString *productID = @"646680221";
        NSDictionary *parameters = @{SKStoreProductParameterITunesItemIdentifier:productID};
        [productViewController loadProductWithParameters:parameters
                                         completionBlock:^(BOOL result, NSError *error)
         {}];
    }];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

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

@end
```

StoreKit.frameworkの追加を忘れないようにしましょう。

![IMG_0320.jpg](https://qiita-image-store.s3.amazonaws.com/0/55871/c20f5207-622a-7067-be98-fc1d35bd483a.jpeg)

## 半分だけ表示

半分だけ表示させたい気分だったので、だいたい半分くらい表示させてみた。

参考：
[Modal Viewのサイズを変更しよう！](http://blog.livedoor.jp/rumblefish0228/archives/17382961.![IMG_0320.jpg](https://qiita-image-store.s3.amazonaws.com/0/55871/6ae0e51e-543e-dfdc-f395-d3af75b9429a.jpeg)
html)

コードは以下の通りです。

``` ViewController.m

#import "ViewController.h"

@interface ViewController () <SKStoreProductViewControllerDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    productViewController = [[SKStoreProductViewController alloc] init];
    productViewController.delegate = self;
    
    self.modalPresentationStyle = UIModalPresentationFormSheet;
}

- (void)viewDidAppear:(BOOL)animated
{
    [self presentViewController:productViewController animated:YES completion:^() {
        
        NSString *productID = @"646680221";
        NSDictionary *parameters = @{SKStoreProductParameterITunesItemIdentifier:productID};
        [productViewController loadProductWithParameters:parameters
                                         completionBlock:^(BOOL result, NSError *error)
         {}];
    }];
    
    self.view.superview.frame = CGRectMake(0, 300, 320, 180);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [self dismissViewControllerAnimated:YES completion:nil];
}
```

![IMG_0319.jpg](https://qiita-image-store.s3.amazonaws.com/0/55871/faf751fd-759e-b734-ceb9-677ec99acc78.jpeg)

ちゃんと動きました。

入手ボタンを押してここからインストールできます。