UDIDの代替手段はありますか?エンタープライズ配布を使用しているため、アプリがApp Storeに移動しません。だから代替品はありますか?私は広告ID、オープンudid、UIID、およびセキュアUDIDを関連付けました。しかし、電話がリセットされた場合、新しいUDIDを取得します。任意の助けいただければ幸いです。
すべての可能な交換を試みた後。広告IDが最善の方法です。私がテストしたとき、それは電話のリセット後も同じままです。ユーザーが設定でオフにすると、null値が返されます。この問題を除いて、これはこれまでのところ最高の代替品です。他にもっと良い代替品があれば更新します。
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つ以上のアプリを再インストールすると、値が変わります。
ベンダーIDを作成し、キーチェーンを使用して保存し、日時を使用して電話をリセットしたら元に戻す必要があります
このリンクをチェックしてください iOS7のUUIDおよびUDID
簡単です、このコードを使用してください:
-(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が変更されることに注意してください。
APNSトークンとvendorIdの組み合わせを使用しています。どちらもチェックされて携帯電話の身元が確認され、そのうちの1つが変更されたときに携帯電話とサーバーで更新されます。
どちらも変更される可能性があります。アプリをアンインストールまたはリセットして数か月間保存すると、両方の値が変更されます。
これにより、次に携帯電話がアプリをインストールしたときに、新しいアプリとして識別されます。
これに加えて、サーバーで2か月間接続されていなかったデバイスを削除済みとしてマークするプロセスをサーバーで実行します。
その場合、ユーザー認証が必要であり、携帯電話が顧客のデバイスのプールに再び追加されます。
私はまだ1つのアプリしか持っていませんが、2つ目のアプリがあると、advertisingIdを含めることができます。
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 /
IOS 6以降では、Swift 2.2バージョンで使用できます。
var uniqueIdentifier: NSString!
uniqueIdentifier = UIDevice.currentDevice().identifierForVendor?.UUIDString