iOSアプリにAppStoreのビューを開く方法

桜も見頃な今日この頃、みなさんいかがお過ごしでしょうか?
ご無沙汰してます菊池です。

しばらく前に営業さんからこんな相談を受けました:

iPhoneのメールアプリでApp Storeのリンクをタップすると、App Storeアプリに切り替わらないで、メールアプリ上にApp Storeのページが開くように なってるんですけど、これ実装出来ますか?」

(いつの間にそんな機能が備わっていたのか。。。不覚)

「ん、調べますー」

Apple 提供のアプリだけでしか使えない機能だったりして?なんて思ったんですが、普通に iOS6 から使える機能だったので、使い方を簡単に紹介してみたいと思います。

で、結論ですがコレを使うとできます:SKStoreProductViewController

ということで、App Store に遷移しないで済むので便利ですよね!
お疲れさまでしたー!

・・・

と、終了してしまうわけないですよ!
ということで、ざっくり実装方法を解説してみたいと思います。

1. デモプログラム解説

使い方が分かるように、簡単なデモプログラムを作ってみました。
このデモプログラムでは UIButtonの tag にアプリの Apple ID が設定されており、UIButton をタップすると該当する App Store ページをアプリ上に開くような実装になっています。また iOS6 より前の環境では App Store アプリが起動するようになっています。

デモプログラムの抜粋は以下の通りです。

2. StoreKit.framework 追加
この SKStoreProductViewController は StoreKit.framework に入っていますので、これをプロジェクトに追加します。お手元の Xcode にて StoreKit.framework を Link するように設定しましょう。

この画面の「Link Binary With Libraries」の左下にある「+」をクリックすると一覧が表示されます。

21

















「StoreKit.framework」を見つけたらクリックして「Add」ボタンを押して下さい。
これで StoreKit.framework が追加されます。簡単ですね。

20


















3. インタフェースファイル

まずは StoreKit/StoreKit.h を import します。
SKStoreProductViewController の delegate 先クラスに SKStoreProductViewControllerDelegate を追加します。ここでは、お手軽に ViewController に追加しています。



4. 実装ファイル

UIButton をタップしたら、tag に設定されている値を使って openAppStoreWithITunesItemIdentifier:を呼び出すようになっています。この openAppStoreWithITunesItemIdentifier: 内で App Store のビューを表示する作りとなっています。
※実践投入する場合には、ストア情報読み込み中に表示するクルクルや、エラー処理などがあると良いと思います。
 
また、表示した App Store のビューの「Cancel」ボタンを押すと SKStoreProductViewController の delegate 先の productViewControllerDidFinish: が呼び出されるので、そこで表示した App Store のビューを閉じるようにします。



ということで App Store に遷移しないで、アプリを紹介出来るので便利ですよね!

以上参考までに。
お疲れさまでしたー!