アプリ内購入を使用するアプリを作成しましたが、すべて問題ありません。ここで、デバイスがジェイルブレイクされ、インターネットにアクセスできず(したがって、店舗の領収書を確認できない)、ユーザーが購入情報を保存したファイルを見つけて操作するとします。
この状況にどのように対処できますか?リンゴで定義された方法はありますか?または、暗号化を(ERNを取得するプロセスとともに)使用する必要がありますか?
アプリ内購入を使用するアプリを作成しましたが、すべて問題ありません。ここで、デバイスがジェイルブレイクされ、インターネットにアクセスできず(したがって、店舗の領収書を確認できない)、ユーザーが購入情報を保存したファイルを見つけて操作するとします。
この状況にどのように対処できますか?リンゴで定義された方法はありますか?または、暗号化を(ERNを取得するプロセスとともに)使用する必要がありますか?
ほとんどの場合、ジェイルブレイクされたデバイスは無視できます。誰かが本当にジェイルブレイクされたデバイスでアプリ内購入を海賊版にしたい場合、彼/彼女はそうすることができます。
はい、難しくすることはできますが、努力する価値はありますか?代わりにいくつかの機能を追加してアプリをより魅力的にすることで、(売り上げを増やすことで)より多くの利益を得ることができませんか?
また、AppleはiPhoneの脱獄を困難にすることに懸命に取り組んでおり、今のところ、iPhoneはかなり成功しているように見えます。
いいえ、私が知る限り、Appleが定義した方法はありません。はい、デバイスIDをキー(またはそれらの線に沿ったもの)として暗号化を使用できます。ファイルの代わりにiOSキーチェーンを使用して、購入情報を保存することもできます。
私が使用するのは、この問題に対処するための私自身の「トリック」です。
まず、2つの異なる大きな素数(5〜6桁で十分)を選択し、それらを乗算して1を加算します。1つは「マスター素数」で、もう1つは店頭で購入したアイテムに依存します。
(master_prime * prime)+1;
結果の数値は9〜15桁の数値です。
これをアプリの2つの異なる場所に保存します(NSKeyedArchiverをファイルに保存したりNSUserDefaultsに保存したりします)。
これは、ユーザーが店舗から何かを購入したときに発生します。
私がアプリを起動するとき、私はいくつかのチェックをします:
それらのいずれかが当てはまらない場合は、インターネットに接続して購入を復元しようとします。購入できない場合(インターネットに再び接続できるようになるまで... ofc)。
これを最適化するには、最初の条件を確認できます...それが正しくない場合は、他の条件を確認する必要はありません。
私は友人の一人にこのような番号を与えてそれをクラックしました..そして彼がマスタープライムとして17桁の数字とストア変数プライムとして5桁の数字でそれを行うのに約5時間かかりました。そして、これは彼が自分が何をしているのかを知っていたからです...あなたがそれらの数字を思い付く方法を知らなければ、それは数日あるいは数ヶ月かかるでしょう。
これを2..またはそれ以上の数の代わりに3つの素数で改善できます...または各素数は異なる特性を持っています。