2010-12-08 15 views
2

私はさまざまなサービスを評価できるクライアントiPhoneアプリを開発中です。登録やログインはありません。iPhoneアプリの投票を特定のiPhoneデバイスに制限する

ユーザは、サービスを繰り返し評価することはできません(ただし、評価を変更することはできません)。物事が現在立つと、アプリは削除され、再インストールされ、ユーザーは再び投票することができます。

私たちはデバイスIDの使用を検討しましたが、同僚はAppleがこれに対して推奨すると述べました。電話機が店舗に戻って再発行された場合に私が正しく理解していれば、新しいユーザーは同じアプリをダウンロードしました。私にとってはかなり端正なケースのようですが、企業内で起こる可能性があります。

投票を特定のデバイスに制限するスマートな方法はありますか?おそらくキーチェーンを使用していますか?

どのポインタも大変感謝しています。

答えて

1

UDIDとUUIDの違いに注意することが重要です。

UDID「一意のデバイスID」はハードウェア固有のものです。特定のデバイスで決して変更されることはありません。このため、プライバシーの問題となり、Appleはこれを使用しようとしているアプリをブロックしています。その結果、アップルはオプトアウト可能な「デバイスID」ハッシュを生成しました。特に、広告の使用に適しています。この新しいIDハッシュはIFAと呼ばれ、iOS 6.0以降で利用可能です。

UUID「ユニバーサルユニークID」は、ハードウェアに固有のものではありません。これは、デバイスを識別するために使用されるハッシュです。特に絶対値ではない。たとえば、PhoneGapはデバイスのプロパティに基づいてUUIDを生成します。これはdevice.uuidを実行したときに得られるものです。アプリを削除して再インストールすると、新しいIDハッシュが取得されます。 UUIDはAppleによってブロックされていません。

あなたのケースでは、iOS < 6.0のバックアップとしてOpenUDIDを使用してIFAを使用するのが最適な解決策だと思います。

ここでは、私たちが使用するコードを示します。 IFAが利用できない場合は、OpenUDIDを取得してください。 OpenUDIDをインストールする必要があります。詳しくは、https://github.com/ylechelle/OpenUDIDをご覧ください。

NSString* uuid = nil; 
if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) { 
    // IOS 6 new Unique Identifier implementation, IFA 
    uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; 
} else { 
    // Before iOS6 (or if IFA disabled) you shoud use a custom implementation for uuid 
    // Here I use OpenUDID (you have to import it into your project) 
    // https://github.com/ylechelle/OpenUDID 
    NSString* openUDID = [OpenUDID value]; 
    uuid = [OpenUDID value]; 
} 
+0

私は同様のニーズがありました。 1つのハッキングされたアプリが、元のUUIDの代わりに生成されたUUIDを毎回送信するとどうなりますか?本当にインストールされた元のアプリケーションからUUIDを特定する方法はありますか? –

+0

ユーザーがOSを5.0から6.0にアップデートするとどうなりましたか? OpenUDIDから最初に取得したUDID、次にios 6以降ではidentifierForVendorを使用します。 – Developer

関連する問題