3

iOS6の新しいIDFA 機能は、iOS6 を実行しているユーザーのコンバージョン トラッキングに適しています。ただし、アプリの最小サポート バージョンが iOS 6 未満の場合、iOS6 より前のデバイスで実行する場合、どのような方法で処理するのが一般的でしょうか?

Jumptap は、iOS6より前のデバイスで UDID を引き続き使用できると述べています。

広告用識別子 (IDFA) は、iOS 6 で導入されました。これは、広告主がコンバージョンの追跡や高度なターゲティングなどに使用します。iOS 6 (またはそれ以降) を使用するデバイスでは、IDFA はデバイス識別子として UDID を置き換えることを目的としています。iOS 5 (またはそれ以前) を使用するデバイスでは、Apple はデバイス識別子として UDID の使用を引き続きサポートします。

しかし、それは私にはうまくいきません。iOS のバージョン チェックは実行時のものです。つまり、コードは非推奨の UDID アクセサーに常に静的にリンクし、実行時にのみそれを読み取るかどうかを決定します。確かに、Apple のレビュー プロセスは UDID への静的リンクを確認し、アプリを拒否します。コードを逆コンパイルしてロジックが正しいことを確認したり、100% コード カバレッジ テストを実行して、iOS6 で実行したときにコードが読み取られないことを確認したりしませんか?!?!

また、AppsFlyer は、SDK で UDID を有効にできることを次のように述べています

*UDID の詳細: 一部の広告ネットワーク (Tapjoy など) では、CPI キャンペーンを実行するために UDID が必要です。上記のケースでは、UDID を有効にし、アプリの利用規約を更新して、個人情報の収集についてユーザーに通知する明確なプライバシー ステートメントを作成する必要があります。

これは、ユーザーに通知する限り、UDID の読み取りが許可されていることを意味しているようです。ただし、Appleの公式ドキュメントにはこれについての言及はありません。

4

2 に答える 2

2

おそらくそうではありませんが、そうすべきです。しかし、Apple の目標は開発者を喜ばせることではありません。彼らの目標は、自分自身を喜ばせることです (つまり、たくさんのお金を稼ぐことです)。

この事件が最終的にあなたに起こることを恐れている場合 (これはかなり合理的な恐れです)、その特定のメッセージへの呼び出しを難読化してみてください (TOS に違反しないように、iOS 5 以前でのみ呼び出すことができます)。 )。例:

NSString *str1 = @"ueId";
NSString *str2 = @"uniq";
NSString *sel = [NSString stringWithFormat:@"%@%@ent%cfi%s", str2, str1, 'i', "er"];
SEL msg = NSSelectorFromString(sel);
if (iOS_5_or_older) {
    deviceID = [[UIDevice currentDevice] performSelector:msg];
}

これは非常に弱い「難読化」ですが、Apple が本当に怠惰になったり、あなたを邪魔すると決めたりした場合、ストーリーの静的分析の部分を通過するのに十分かもしれません。

于 2013-02-02T06:16:14.483 に答える
1

UDID が検証に失敗するようになりました。OpenUDID に移動します。

于 2013-05-31T15:54:15.033 に答える