【Swift】iPhone/iPadでデバイス固有のIDを取得・生成する方法
UDIDとは何か?
UDID(Unique Device Identifier)とは、iOSデバイスを一意に識別するために使われていた、40桁の16進数文字列のことです。かつてはデバイス固有のIDとして広く利用されていました。
従来の方法が使えなくなった背景
iOS 5以降、Appleは UIDevice の uniqueIdentifier プロパティを非推奨としました。これにより、従来のようにデバイス全体で共通の一意なIDを取得する手法は使えなくなっています。これはユーザーのプライバシー保護を目的とした変更で、Appleは「デバイスをまたいで追跡できる完全な一意識別子」を廃止し、代わりにベンダー単位の識別子(UUID)を導入しました。
この識別子は、同じ開発者(Vendor)が提供するすべてのアプリ間では同一の値になりますが、開発者が異なる場合やデバイスが異なる場合は異なる値となる仕組みです。
identifierForVendor(IDFV)を使った実装
Appleは UIDevice クラスに identifierForVendor というインスタンスプロパティを用意しています。これは、そのアプリのベンダーに対してデバイスを一意に識別する英数字の文字列(UUID)を返します。
詳細は公式ドキュメントを参照してください。
UIDevice.identifierForVendor - Apple Developer Documentation
コード例
それでは、実際にデバイスIDを取得してみましょう。以下のコードを viewDidLoad メソッドにコピーしてください。
override func viewDidLoad() {
super.viewDidLoad()
guard let deviceID = UIDevice.current.identifierForVendor?.uuidString else {
return
}
print(deviceID) // 例: 7ABAB8B5-E805-437F-9D6C-5448BB19AEA5
}このコードを実行すると、コンソールにハイフン区切りのUUID形式(例:7ABAB8B5-E805-437F-9D6C-5448BB19AEA5)でデバイスIDが出力されます。
利用時の注意点
- 同じベンダーのアプリを端末からすべて削除すると、次にインストールした際に新しいUUIDが生成される場合があります。
- アンインストール後も ID を保持したい場合は、Keychain に保存しておくなどの対策が有効です。
- 識別子を利用する際は、App Storeの審査ガイドラインおよびプライバシー関連のポリシーに配慮してください。
-
iPhone・iPad・MacのAirDropでパスワードを安全に共有する方法
パスワード管理って、本当に頭を悩ませる問題ですよね。特にパスワードを決めるときは、「覚えやすく、かつ推測されにくい」ものを選ばなければなりません。複雑で強固な独自のパスワードを設定すれば、ハッカーが簡単にアカウントへ侵入できなくなるため、アカウントに追加の保護レイヤーをもたらしてくれます。メールでもSNSでも、どんなアプリでもログインにはパスワードが必要。しかも、覚えておかなければならないパスワードは山ほどあります。では、友人から「YouTubeやNetflixのアカウントでログインしたい」と頼まれたら、どうしていますか?メッセージやWhatsAppで送るか、隣に座っているなら口頭で伝える——
-
TweakPassで独自性の高い強力なパスワードを生成する方法
認証情報は、ニュースサイトへのログインのような簡単なものから、銀行取引やクレジットカードのように極めて重要なものまで、常に安全に管理すべき大切な情報です。認証情報は「ユーザー名」と「パスワード」の2つの要素で構成されています。ユーザー名は多くの場合、氏名・メールアドレス・電話番号の使用を求められ、選択の余地がほとんどありません。一方、パスワードはユーザーが自由に決められるものです。これは便利な反面、「123456」や「password」といった推測されやすい簡単なパスワードを設定してしまう原因にもなります。本記事では、セキュアなパスワードジェネレーターを使って強固なパスワードを生成する方法をご