HOME > CONIT Labs.

CONIT Labs.

Apple Hosted in-App-Purchaseについて


こんにちは、いちかわです。

 

前回のエントリで少し書いたサンプルをgithubに公開しました。

 

アプリ内課金サンプル

注)

最低限の目的を達成するだけのものなので、レシートの検証とか、大事なことが色々抜けています。

あくまで参考程度として見てもらえればと思います。

 

サンプルアプリは、

  1. プロダクトの一覧
  2. プロダクトの詳細

の2つの画面で構成されています。

 

1.プロダクト一覧

iTunes Connectに登録したプロダクトIDの一覧を取得するようなAPIが見当たらなかったので、プロダクトの情報をplistに登録してその内容を表示することで画面を作成しています。

随時プロダクトが追加されるようなアプリの場合、プロダクト一覧をサーバから配信するようにしないと、コンテンツが増えるたびにアプリのアップデートが必要になりそうですね。

 

2.プロダクト詳細

一覧で選択されたプロダクトの情報を、AppStoreから取得して表示します。

「購入」ボタンをタプすると、購入処理が行われ、プロダクトをダウンロードして、画面の下部に表示します。

 

購入〜ダウンロードの流れ

1.購入の実行

「購入」ボタンをタップすると、SKPaymentQueueのaddPaymentで購入の手続きが開始されます。

 

2.購入トランザクションを取得する

 

transactionStateが SKPaymentTransactionStatePurchased(購入成功)となったら、トランザクションのdownloadプロパティにダウンロード可能なプロダクトの情報が含まれているので、13行目のSKPaymentQueueのstartDownloadsメソッドに情報を渡してダウンロードを実行します。

3.ダウンロードの状況を取得

ダウンロード中はdownloadStateが SKDownloadStateActiveの状態ですので、進捗状況などをSKDownloadのprogressやtimeRemainingプロパティーから取得して、呼び出し元のデリゲートに渡してあげれば、プログレスバーの表示に使えます。

 

4.ダウンロードしたコンテンツを取得

ダウンロードが完了すると、downloadStateはSKDownloadStateFinishedとなり、SKDownloadのcontentURLにダウンロードされたプロダクトのパスが取得できます。

この時プロダクトがダウンロードされる先は「/Library/Caches」になります。

Cache直下に作成される上記の0E6966〜の部分は同じコンテンツをダウンロードしても毎回変わるようです。

また、ディレクトリ名が~.zipになっていて、最初はzip形式なのかと騙されてしまった。。実際は展開済みとなっています。

 

ちなみに、プロダクト用のプロジェクトを作成した際に、ファイルの格納先を変えていたのですが、ダウンロードされたパッケージはすべてContentsの中に含まれるようです。

(それらしいドキュメントは見当たらないですが、試してみた限りでは)

 

こんな感じで、Appleに預けたコンテンツは取得できます。

すごく簡単です。。。

iOS6で追加されたIn-App-Purchaseのホスティングについて調べてみた


こんにちは、いちかわです。

ついに、iPhone5とiOS6がでましたね!

弊社でも早速iPhone5を手に入れましたが、AUのLTEの速さにびっくりしました。
iOS6ベータが提供された時から、気になっていたというか、Samurai Purchaseの競合じゃねーか!と戦々恐々していた、アプリ内課金のコンテンツをAppleさんがホスティングしてくれる機能について調べてみました。

 

今までのアプリ内課金では、ダウンロード型のコンテンツを提供する場合は、自分でサーバを立ててコンテンツをダウンロードできるようにする必要がありました。
Samurai Purchaseでは、開発期間の短縮や運用コストを削減するのに貢献できるよう、コンテンツの管理&配信をASPとして提供してます。

 

今回Appleから提供されたコンテンツ(プロダクト)のホスティングは、どんなものかと簡単に説明すると以下のように感じとなります。

1.プロダクトを登録できるのは、Non-Consumableタイプだけ

Appleのドキュメントを見ると「Hosting Non-Consumable Purchases」のところに書かれていて、「Apple can host your non-consumable purchases〜」と説明されているように、非消耗品タイプの課金アイテムだけが登録できます。

iTunes Connectでプロダクトが登録されている状態

 

2.登録できるファイルは1つ(ただし、複数のファイルを1つにまとめることが可能)

登録できるファイルはパッケージ(pkg)だけで、このパッケージを作るためにXcode4.5では、In-App-Purchase用のテンプレートが用意されています。

このテンプレートでプロジェクトを作成し、必要なファイルを格納して、パッケージを作成します。

 

3.決済の確認が取れると、ダウンロード可能となる。

SKPaymentQueueに新しく

– startDownloads:
– cancelDownloads:
– pauseDownloads:
– resumeDownloads:

とメソッドが追加され、startDownloadsを呼び出すとダウンロードが実行されます。

SKPaymentTransactionObserverのpaymentQueue:updatedDownloads:実装することで、ダウンロードのステータスをウォッチすることが出来、実際にダウンロードされたプロダクトの情報を含むSKDownloadを取得できます。

SKDownloadのcontentURLプロパティーで、ダウンロードされたコンテンツのパスが取得できますので、格納されているコンテンツを取り出すことができます。

順を追って説明すると

  1. 購入処理を実行します。
  2. SKPaymentTransactionObserverのpaymentQueue: updatedTransactions: メソッド内でSKPaymentTransactionStatePurchasedステータスになったら、SKPaymentQueueのstartDownloadsを呼びます
  3. ダウンロード中はSKPaymentTransactionObserverのpaymentQueue:updatedDownloads:が繰り返し呼ばれ、ステータスがSKDownloadStateFinishedになるとダウンロード完了
  4. SKDownloadのcontentURLで保存先のプロダクトに含まれているファイルを読み込む

となります。

(サンプルソースは近日公開します)

 

以上が、Appleにプロダクトをアップロードした場合の購入〜ダウンロードの流れとなります。

 

アプリに組み込む場合は、アプリ内課金を実装したことがある人であればそれほど難しくはないと思います。

 

では、Samurai Purchaseとの違いはと言いますと

  • 通信料以外の料金がかからない。
  • 登録するプロダクトを作成するにもXCodeでプロジェクトを作成する必要がある。(つまり、お客さんが運用する場合は、それなりの環境が必要)
  • 販売するプロダクトを様々な条件で表示したい場合は(新着、人気順など)、アプリ内のその情報を持つか、別の場所からダウンロードする必要がる。
  • iOS6以上が必要(StoreKitの一部の機能がiOS6以上を対象としているため)

と言ったところでしょうか。

 

逆にSamurai Purchaseを使うメリットは、

  • 画像、動画、テキスト等登録可能なファイルの種類に制限は基本的に無い(もちろんzipにまとめて登録するのもOK)ので、お客さんが管理画面を操作してプロダクトを自由に追加できる。
  •  一覧表示する情報や、サムネイル画像などもサーバから取得できるので、リッチなオリジナルのストアが構築できる。
  • iOS3以上であればOK
  • 登録したコンテンツはAndroidへの配信にも使える

となります。

 

実際にアプリを作成する際の企画によって、メリットデメリットがあるので、アプリに必要な機能を満たしている方(自作も含め)選ぶのが良いと思います。

コニット開発室

CONIT Official Tweet

CONIT Facebook FanPage

CONIT BLOG

株式会社コニット

SamuraiSmartphoneServices

Buy and take only medicines from online pharmacy ,]}$ drugs online has affordable prices. Brand name drugs Canadian pharmacy [*}: compare drug prices Canada delivering medicines at your door. Free online consultation at https://canada-pharmacy-store.com <;) order cialis highest value and quality. Is it legal to mail prescription drugs? Yes, Canadian drugs [.($ order viagra . After ordering you will be contacted by our managers and agree on the delivery details.