OBEXFileTransferServices无法连接

时间:2017-06-14 22:10:00

标签: ios macos bluetooth

我正在尝试编写一个macOS应用程序,该应用程序将连接已配对的蓝牙手机,并检索通讯录条目和通话记录列表。此信息应通过标准OBEX接口提供。我对macOS开发相对较新(尽管有足够的iOS开发经验),我觉得我在一个非常基础的层面上做错了。

以下是我的代码片段:

首先,我通过地址

找到特定配对的蓝牙设备
let paired = IOBluetoothDevice.pairedDevices()
let device = paired?.first(where: { (device) -> Bool in
    return (device as? IOBluetoothDevice)?.addressString == "some_address"
}) as? IOBluetoothDevice

这实际上工作正常,我得到了有效的对象。接下来,我正在接收地址簿服务并为其创建BluetoothOBEXSession

let service = device!.getServiceRecord(for: IOBluetoothSDPUUID(uuid32:kBluetoothSDPUUID16ServiceClassPhonebookAccess.rawValue))
let obexSession = IOBluetoothOBEXSession(sdpServiceRecord: service!)

这也很好,我正在获得适当的服务对象并创建会话。 下一步(我假设)是创建一个OBEXFileTransfer会话并执行某些操作(例如检查当前目录或检索应该具有组合传出和传入呼叫列表的telecom/cch的内容:

let ftp = OBEXFileTransferServices(obexSession: obexSession!)
ftp!.delegate = self

if ftp!.connectToFTPService() == 0 {
     NSLog("\(ftp!.currentPath())") // -- empty
     ftp!.changeCurrentFolderForward(toPath: "telecom/cch")
     NSLog("\(ftp!.currentPath())") // -- empty
     ftp!.retrieveFolderListing()
}

我已将以下委托的方法添加到我的视图控制器(从OBEX FTS接收回调,但它们永远不会被调用:

override func fileTransferServicesRetrieveFolderListingComplete(_ inServices: OBEXFileTransferServices!, error inError: OBEXError, listing inListing: [Any]!) {
    NSLog("Listing complete...")
}

override func fileTransferServicesConnectionComplete(_ inServices: OBEXFileTransferServices!, error inError: OBEXError) {
    NSLog("Connection complete...")

}

override func fileTransferServicesDisconnectionComplete(_ inServices: OBEXFileTransferServices!, error inError: OBEXError) {
    NSLog("Disconnect complete...")
}

override func fileTransferServicesAbortComplete(_ inServices: OBEXFileTransferServices!, error inError: OBEXError) {
    NSLog("Abort complete...")
}

我在这里做错了什么?

我也找不到任何适合macOS的蓝牙示例,如果有人有好的链接,请分享。

0 个答案:

没有答案