web-dev-qa-db-ja.com

IOS7でのUDIDの置き換え

UDIDの代替手段はありますか?エンタープライズ配布を使用しているため、アプリがApp Storeに移動しません。だから代替品はありますか?私は広告ID、オープンudid、UIID、およびセキュアUDIDを関連付けました。しかし、電話がリセットされた場合、新しいUDIDを取得します。任意の助けいただければ幸いです。

14
Avinash

すべての可能な交換を試みた後。広告IDが最善の方法です。私がテストしたとき、それは電話のリセット後も同じままです。ユーザーが設定でオフにすると、null値が返されます。この問題を除いて、これはこれまでのところ最高の代替品です。他にもっと良い代替品があれば更新します。

3
Avinash

IOS 6.0以降では、identifierForVendorまたはCFUUIDRefを使用できます。

-(NSString*)uniqID
{
    NSString* uniqueIdentifier = nil;
    if( [UIDevice instancesRespondToSelector:@selector(identifierForVendor)] ) {
        // iOS 6+
        uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    } else {
        // before iOS 6, so just generate an identifier and store it
        uniqueIdentifier = [[NSUserDefaults standardUserDefaults] objectForKey:@"identifierForVendor"];
        if( !uniqueIdentifier ) {
            CFUUIDRef uuid = CFUUIDCreate(NULL);
            uniqueIdentifier = ( NSString*)CFUUIDCreateString(NULL, uuid);
            CFRelease(uuid);
            [[NSUserDefaults standardUserDefaults] setObject:uniqueIdentifier forKey:@"identifierForVendor"];
        }
    }
return uniqueIdentifier;
}//

[〜#〜]更新[〜#〜]

なので Leon Lucardie彼が正しいコメント

identifierForVendorは、アプリのアンインストール/再インストール後に変更されます。こちらをご覧くださいiOSデバイスにアプリ(または同じベンダーの別のアプリ)がインストールされている間、このプロパティの値は変わりません。ユーザーがデバイスからそのベンダーのアプリをすべて削除し、その後1つ以上のアプリを再インストールすると、値が変わります。

16
Nitin Gohel

ベンダーIDを作成し、キーチェーンを使用して保存し、日時を使用して電話をリセットしたら元に戻す必要があります

このリンクをチェックしてください iOS7のUUIDおよびUDID

3
Sandeep Khade

簡単です、このコードを使用してください:

-(NSString *)getUID{
    if ([[UIDevice currentDevice] respondsToSelector:@selector(identifierForVendor)]) {
    // This is will run if it is iOS6 and above
        return [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    } else {
    // This is will run before iOS6 and you can use openUDID or other
    // method to generate an identifier
        return [OpenUDID value];  
    }  
}

理解できるように、iOS 5をサポートする場合は、OpenUDIDを使用する必要があります(AppleはiOS 5でもUDIDの読み取りを制限しています)。ここでいくつかの答えを使用すると、Apple(私のコードは私のいくつかのアプリで承認されています)によって拒否されます。

ユーザーがアプリ(複数ある場合はすべてのベンダーアプリ)を削除して再インストールすると、identifierForVendorが変更されることに注意してください。

2
Idan

APNSトークンとvendorIdの組み合わせを使用しています。どちらもチェックされて携帯電話の身元が確認され、そのうちの1つが変更されたときに携帯電話とサーバーで更新されます。

どちらも変更される可能性があります。アプリをアンインストールまたはリセットして数か月間保存すると、両方の値が変更されます。

これにより、次に携帯電話がアプリをインストールしたときに、新しいアプリとして識別されます。

これに加えて、サーバーで2か月間接続されていなかったデバイスを削除済みとしてマークするプロセスをサーバーで実行します。

その場合、ユーザー認証が必要であり、携帯電話が顧客のデバイスのプールに再び追加されます。

私はまだ1つのアプリしか持っていませんが、2つ目のアプリがあると、advertisingIdを含めることができます。

1
Haac74

Oleによるこれらのブログ投稿は役立つはずです。

iOS 5: http://oleb.net/blog/2011/09/how-to-replace-the-udid/ iOS 6+: http://oleb.net/ブログ/ 2012/09/udid-apis-in-ios-6 /

0
Berk

IOS 6以降では、Swift 2.2バージョンで使用できます。

var uniqueIdentifier: NSString!
uniqueIdentifier = UIDevice.currentDevice().identifierForVendor?.UUIDString
0
sn86