我试图获取Macbook Air的蓝牙MAC地址,在许多地方都在线查看。我偶然发现的一切都只是基于iOS开发,而不是基于macOS领域。其他一切都说它已经过了iOS 7的折旧,所以我不知道它是否可以在最新的Mac操作系统上使用。有谁知道在任何框架下是否可能?我不打算将此内容提交到App Store。
答案 0 :(得分:0)
我可以找到从使用Swift的macOS应用程序获取蓝牙MAC地址的最佳选项围绕executing a terminal command,然后格式化输出。
只需指定launchPath
的{{1}}即可
&安培;使用标记networksetup
获取output。
答案 1 :(得分:0)
我要感谢@MattGalaxy在他的回答下面的评论中提出的建议和帮助。最终,这一切都很顺利,这就是我如何解决这个问题。这可以在Playground或使用Xcode构建的macOS应用程序中运行。
以下是与之相关的代码:
import Foundation
let task = Process()
task.launchPath = "/usr/bin/env"
task.arguments = ["networksetup", "-getmacaddress", "en2"]
let pipe = Pipe()
task.standardOutput = pipe
task.standardError = pipe
task.launch()
task.waitUntilExit()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output: String = NSString(data: data, encoding: String.Encoding.utf8.rawValue) as! String
原来是这样的:
Ethernet Address: XX:XX:XX:XX:XX:XX (Device: en2)
这确实说以太网地址,然而,设备en2
专门用于蓝牙,因此所有这些捕获都是。
我将变量bluetoothAddress
设置为等于上面的输出。
var bluetoothAddress = output
然后只是玩了一下,直到我能够只处理这些之间的地址。
let startIndex = bluetoothAddress.index(bluetoothAddress.startIndex, offsetBy: 18)
let endIndex = bluetoothAddress.index(bluetoothAddress.startIndex, offsetBy: 34)
bluetoothAddress = bluetoothAddress[startIndex...endIndex]
然后最后,放弃我原来在问题中要求的输出:
XX:XX:XX:XX:XX:XX
(请记住,我在整个答案中使用占位符XX来保护我的隐私:P)