2012-03-29 4 views
6

Appleは[UIDevice uniqueIdentifier]を使用するアプリケーションを拒否し始めたようです。先週、アプリを使用して却下され承認されたという報告を聞いたことがあります(一部は解決するものもあれば、そうでないものもあります)。しかし、私のアプリに収益をもたらす主要な広告ネットワークのどれも、UDIDを使用しないAPIはまだ出ていません。私のアプリに含まれているすべてのAPIがそれを使用します。彼らはすべて新しいAPIに取り組んでいると言いますが、間もなくリリースされる予定ですが、数ヶ月先のことかもしれません。アップルはアプリのレビュー中にUDIDアクセスをどのように検出しますか?

アップルは、単に、それを許可しない新しいバージョンのOSではなく、アプリのレビュープロセスを通じてこのポリシーを適用することが非常に奇妙に思えます(また、ベータ中にプログラムのリードタイムもあります) 。

すべて私の質問は、あなたがアプリのレビュー中にUDIDにアクセスしている場合、Appleがどのように検出しているのかということです。彼らは何とかそのバンドルをスキャンしてコールがそこにあるかどうかを確認するのですか、あるいは彼らが実際にアプリケーションをテストしている間に行われたシステムコールを監視していますか?私はおそらく、広告APIにアクセスしたくないと思っていたのですが、ユーザーが支払いを望んでいる場合や、サポートされている広告を選択してUDIDを提供するという選択肢を与えた場合です。しかし、私はAppleが[UIDevice uniqueIdentifier]に基づいて単にあなたのコードにコンパイルされているかどうか、またはあなたが[UIDevice uniqueIdentifier]を呼び出してそれをアプリレビューのテスト中に検出したかどうかを理解する必要があります。

[UIDevice uniqueIdentifier]を使用しない理由、または独自のUDIDの作成方法などについてはお答えください。私の問題は、私がまだ必要としていない第三者図書館です代替ソリューション。問題は:アプリケーションのレビュー中にAppleがUDIDアクセスをどのように検出するのですか?

+1

"という新しいバージョンのOSではなく、単にそれを許可しないが、Appleはそれを使用できなかった。 ;) – Joel

+0

開発者が最初にアプリをアップデートすることを強制することなく、APIを削除すると、現在顧客のデバイス上で実行されている既存の承認済みおよび購入済みのアプリが破損し、OSアップデートに非常に不満を示す可能性があります。 – hotpaw2

答えて

7

これらは静的解析を使用することが知られています。静的解析は、コンパイルされたバージョンのコンパイル済みバイナリを特定のメソッドにスキャンします。また、プライベートAPIへの呼び出しを検出するためにもこれを使用します。クリエイティブな方法で文字列からセレクタを構築することで、静的解析を欺くことが可能です。それは決して正直ではありません。

しかし、より堅牢な方法は、HTTPプロキシを経由する可能性が高いです。アプリを使用することで、送信されるUDIDのHTTPトラフィックを監視できます。おそらくハッシングや2ウェイの暗号化によって奪われる可能性があります。これはまた、正直でも推奨でもないでしょう。

今夏にiOS6がリリースされると、このメソッドは完全に削除され、その使用法のすべての難読化が完全に無効になる可能性があります。

+0

サードパーティの広告ネットワークAPIはプリコンパイルされているため、ソースコード内の[UIDevice uniqueIdentifier]への呼び出しを「難読化」する方法はありません。私は起動時に自動的にAPIに接続するのではなく、ユーザーにオプションを与えることを考えています。しかし、良い答え。ありがとう。 – user1301928

2

アップルは、アプリケーション内で使用されているすべてのメソッドシグネチャに対して静的スキャンを使用することが報告されています(アップルの非公開のものと同じメッセージ署名を開発者独自のカスタムクラスとして使用することを拒否する

さらに、特定のハードウェアやリリースされていないOSのバージョンについても、ネットワークトラフィックなどの計測を含む場合と含まない場合があります。

関連する問題