小编Mr *_*nev的帖子

iOS 9:获取CNContact国家/地区代码和电话号码

我想从iOS 9上的CNContact获取国家代码和电话号码.我尝试过很多东西,但找不到办法.我取得的最好成绩是打印:

<CNPhoneNumber: 0x7f886389a140: countryCode=us, digits=5555648583>
Run Code Online (Sandbox Code Playgroud)

我是这样做的:

func contactPicker(picker: CNContactPickerViewController, didSelectContact contact: CNContact) {
    print(contact.phoneNumbers.count)
    for number: CNLabeledValue in contact.phoneNumbers {
        print(number.value)
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要的是countryCode和数字的值.有任何想法如何在Swift中访问它们?谢谢!

ios swift

16
推荐指数
2
解决办法
9084
查看次数

如何通过 CBL2CAPChannel 发送和接收数据

我正在尝试在 2 个 iOS 设备之间打开一个 L2CAP 通道并双向传输数据。其中一个设备作为中心,另一个作为外围设备。

在外围方面:

我发布了一个这样的 L2CAPChannel:

func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) {
    if peripheral.state == .poweredOn {
        peripheral.publishL2CAPChannel(withEncryption: false)
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试了 true 和 false 进行加密。

然后,一旦频道发布,我就从 didPublishL2CAPChannel 委托方法中获取 PSM,并创建一个具有包含 PSM 作为其值的特征的服务,并开始对其进行广告宣传。

在中央一侧:

我扫描外围设备,找到合适的外围设备,连接到它,开始发现服务,然后一旦发现服务,我就会发现特征。我找到了特征,读取了它的值并获得了 PSM。然后我这样做:

self.peripheral.openL2CAPChannel(psm)
Run Code Online (Sandbox Code Playgroud)

然后我在通道打开的委托方法中得到一个回调并执行以下操作:

func peripheral(_ peripheral: CBPeripheral, didOpen channel: CBL2CAPChannel?, error: Error?) {
    guard error == nil else {
        print("Couldn't open channel. Error: \(error!.localizedDescription)")
        return
    }
    self.l2capChannel = channel
    self.l2capChannel?.inputStream.delegate = self
    self.l2capChannel?.outputStream.delegate = self
    print("L2CAP channel opened with \(peripheral.name ?? "unknown")")
} …
Run Code Online (Sandbox Code Playgroud)

l2cap ios core-bluetooth swift

3
推荐指数
1
解决办法
1059
查看次数

标签 统计

ios ×2

swift ×2

core-bluetooth ×1

l2cap ×1