2011-12-16 10 views
2

私はinApp支払いのiPhoneアプリで作業しています。ユーザーが小額の支払いをするたびに、アプリケーションの更新を受け取ります。 「更新」は、アドベンチャーゲームにおける新しい「章」の一種であり、テキストやXMLファイル、画像、音などで構成され、一般的に「資産」です。アセットがダウンロードされると、アセット内に新しい章(またはステージまたはステップ)のコンテンツが形成されます。iPhoneアプリケーションで更新を読み込む方法

このデータをすべて読み込む方法についてのアドバイスを探しています。たとえば、ダウンロード中にデバイスが誤って動作しなくなったり、何らかの理由で切断されたりする可能性があります。この方法では、更新の整合性が失われます。私はちょっと調べて、md5チェックサムやソケットのあるソリューションを見つけましたが、何かを始める前にここでも質問したかったのです。たとえば、大きなzipファイルをダウンロードすることをお勧めしたいのですか、小さな非圧縮ファイルをダウンロードする方がいいでしょう。

アドバイスありがとうございます。ありがとうございました。

答えて

1

私は同様の設定をしており、インストールされているアイテムのデータベースを維持しています。私はまた私のサーバーから定期的に更新される利用可能な項目の別のリストを持っています。

ユーザーが商品を購入すると、その商品は「購入済み」というステータスの「使用可能」リストから「インストール済み」リストにコピーされます。その後、ダウンロードキューに入ります。

ダウンロード後、ステータスは「ダウンロード済み」に移動され、インストールが完了します。最終的に状態は「インストール済み」に更新されます。

ステータスが「インストール済み」でない「インストール済み」リストのアイテムについて、アプリケーションの起動時(またはバックグラウンドなし)をチェックすることにより、中断から保護します。ステータスに応じて、ダウンロードを再開するか、インストールをやり直してください。

ファイルの整合性については、既知のヘッダーを確認するだけですが、md5や他のチェックサムを使用する方がよいでしょう。

アップデート:私のアプリは1つのファイル(sqliteデータベース)しかダウンロードしないので、中断した場合は最初からやり直す必要があります。 NSURLConnectionがサポートしているWebサーバーで圧縮を有効にしているので、圧縮は透過的に行われます。しかし、私は、zipファイルを使用することに主に関心があるのは、主にダウンロードを簡単にすることだと確信しています。私はある時点でzipファイルの使用を検討していましたが、簡単な方法でそれを抽出することができませんでした。

+0

それは面白いです。いくつかの質問:ダウンロードを開始すると、アプリケーションの状態を記録する一種のフラグ(テキストファイルやdbなど)がありますか? iPhoneを再起動してアプリを起動したときに、私が誤ってiPhoneを閉じると、もう一度ダウンロードを開始したいと思うかもしれません(ダウンロードしても何も表示されない場合、どうすれば再開できますか?別のもの:一時的な切断がありますか? – AsTheWormTurns

+0

私は、インストールされているアイテムのリストに依存して、不完全なものがあるかどうかを確認します。私はアプリが再開するたびにこれをチェックします。そして、接続が途中で終了したら、私はダウンロードを開始します。 HTTPはダウンロードの再開をサポートしていますが、私はそれに対処したくありませんでした。 – Brian

0

私はあなたがゲームを公開するときにゲームが使用するすべてのリソースを置くことができると思う、いくつかの章がロックされているときに、ユーザーが章を購入してApp Purchaseで章をロック解除する。 ユーザーがチャプターを購入するとき、ユーザーはファイルをダウンロードする必要はありません。

+0

いいえ、チャプターのコンテンツはサードパーティによって追加され、いつでも変更できるため、これはオプションではありません。穏やかな返答をありがとう。 – AsTheWormTurns

0

これはあなたが支払うとき、彼らはアプリケーションの次の部分をインストールする権利を購入します。それが自動的にインストールされるわけではありません。

このリストにアクセスするたびに、アプリがWi-Fi接続を使用してアプリのこの部分をインストールする権利を持っているかどうかをテストするように、アプリ内のリストにダウンロードを保存する必要があります。そうであれば、プログラムは既存のインストールをチェックするか、ファイルを書き換えるだけです。例えば

enter image description here

ロックは、ユーザーがまだこれらのために払っていないことを示しています。このイメージがアプリケーションにあって、ロードされる前に、データベースや何かがコンピュータからチェックされ、ユーザーがそのステージを購入したかどうかをチェックし、そうであればYesまたはNayを返します。

ボタンをクリックするたびにステージが再生されず、実際にファイルがダウンロードされます。それで、私のところでそれをステージングするのは悪かったです。それは、 "Download stage 1"かそれに類するものです。


編集: このアプリに完全に依存し、その他のファイルのサイズは、ほとんどの場合、私はちょうど、ユーザーにそれを容易にするために、非圧縮ファイルを持っているでしょうが、彼らは非常に大きなファイルであれば、圧縮ファイルを使用する必要があります。私は圧縮ファイルを個人的に使用したことはありませんが、iphoneでファイルを抽出しなければならないと、一部のユーザーにとって問題が発生すると思います。

+0

質問に何か間違った文章が書かれているに違いありません。私はアプリ全体をどのように整理するのか知りたくありません。どのファイルがファイルのダウンロードを実行する最良の方法であるかを知りたい。 – AsTheWormTurns

+0

@AsTheWormTurns改訂版 – Gabe

+0

これは切断などの問題には答えません。 – AsTheWormTurns

関連する問題