iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

iOS/iPhoneでMACアドレスをプログラムから取得する方法と代替手段(identifierForVendor活用)

iOS 7以降、MACアドレスの取得は制限されています

iOS 7.0より前のバージョンでは、プログラムからデバイスのMACアドレスを取得することが可能でした。しかし、iOS 7.0以降では、アプリによるMACアドレスへのアクセスがAppleによって無効化されています。

現在のiOSバージョンでMACアドレスにアクセスしようとすると、必ず「02:00:00:00:00:00」という固定値が返されます。これは、ユーザーのプライバシー保護を目的としてAppleが実装した仕様です。

代替手段:UDID / UUID の使用

アプリでデバイスを一意に識別する必要がある場合、AppleはMACアドレスの代わりにUDIDやUUIDを使用することを推奨しています。

Swiftでは、UIDevice.current.identifierForVendor を利用できます。このプロパティについては、Appleの公式ドキュメントに以下のように記載されています。

同一ベンダーから提供されたアプリが同じデバイス上で動作している場合、このプロパティの値は同一になります。同じデバイス上でも異なるベンダーのアプリには異なる値が返され、またベンダーに関係なく異なるデバイス上のアプリにも別の値が返されます。

UUIDを文字列として取得する

UUIDを文字列形式で取得したい場合は、次のように uuidString プロパティを使用します。

UIDevice.current.identifierForVendor?.uuidString

実際のコード例

ViewController内での使用例は以下のとおりです。

override func viewDidLoad() {
    super.viewDidLoad()
    print(UIDevice.current.identifierForVendor)
    print(UIDevice.current.identifierForVendor?.uuidString)
}

実行結果

iPhone 7 Plus(iOS 12.0シミュレーター)で実行すると、以下のような結果が出力されます。

Optional(1E52E5F9-9385-4269-A2CA-A0B9063DCBA5)
Optional("1E52E5F9-9385-4269-A2CA-A0B9063DCBA5")

このように、identifierForVendor を使えば、プライバシーポリシーに準拠した形でデバイスの一意な識別子を安全に取得できます。

  1. Android端末のメインメールアドレスを取得する方法をサンプルコード付きで解説

    本記事では、Android端末に登録されているメインのメールアドレスを取得する方法を、実際のサンプルコードとともにわかりやすく解説します。AccountManagerとGET_ACCOUNTS権限を活用することで、端末に設定されたアカウント情報からメールアドレスを取得できます。 手順1:Android Studioで新規プロジェクトを作成する Android Studioを起動し、「File」→「New Project」を選択して、必要な項目を入力して新しいプロジェクトを作成します。 手順2:res/layout/activity_main.xml にコードを追加する 以下のコードをレイアウト

  2. iOS 12でiPhoneに隠された「類語辞典(シソーラス)」を有効化する方法

    iOS 12には数多くの新機能が追加されましたが、その中でも特に注目すべきなのが「類語辞典(シソーラス)」です。文章を書く際、単語の言い換えや表現の幅を広げるために類語辞典は欠かせない存在であり、辞書の最高の相棒とも言われています。ライターの方や文章力を磨きたい方にとって、iPhoneに内蔵された類語辞典は心強い味方になるでしょう。実はiOS 12でAppleがこの機能を追加したものの、初期状態では無効になっています。当初、iOS 12の最初のベータ版ではデフォルトで無効でしたが、2番目の開発者向けベータ版およびパブリックベータ版以降はデフォルトで有効になりました。そのため、正式リリース後も有