应用仅在从Xcode运行时发现蓝牙设备

时间:2019-05-13 10:10:27

标签: ios swift bluetooth

我正在用this project的叉子来安装Empatica E4腕带,并且如果不从Xcode运行该应用程序,就无法使发现设备正常工作。这种情况可以用原始样本项目复制。

当我通过Xcode运行项目时,我可以看到附近设备的列表。 但是,当我关闭应用程序并从手机中跑了进去(而不是在Xcode上单击“播放”)时,我看不到任何设备。

我应该在项目上配置某些内容还是拥有开发者帐户?现在,我没有支付开发者帐户,但我认为无需使用Xcode运行该应用程序就可以做到这一点。谢谢。

简而言之:我可以在不将手机连接到XCode的情况下打开该应用程序,但是当我未连接到XCode时我无法发现设备。

更多详细信息。 当在iPhone上通过Xcode 执行时,设备发现将起作用。在日志上,我们可以看到:

E4tester    [didUpdate] status 2 • kBLEStatusScanning
bluetoothd  Received XPC message "CBMsgIdScan" from session "Empatica.E4testerCV-central-313-24"
bluetoothd  Received 'start scan' request without duplicates for all UUIDs from session "Empatica.E4testerCV-central-313-24"
bluetoothd  State of application "Empatica.E4testerCV" is now "foreground-running"

但是。在iPhone上打开应用程序(而不是通过Xcode运行)时,我们会收到以下日志消息:

E4tester    [didUpdate] status 0 • kBLEStatusNotAvailable
E4tester    Task <EA813C26-F662-461C-8C47-A97FA7E32BA4>.<0> response ended
E4tester    Task <EA813C26-F662-461C-8C47-A97FA7E32BA4>.<0> done using Connection 1

此处的重要细节是kBLEStatusNotAvailable状态,与kBLEStatusScanning相反。根据他们的docs,这表示 iOS设备不支持Bluetooth LE,或者Bluetooth LE模块未激活。,但该设备确实支持BT LE并且已启用。

我在他们的存储库中打开了一个issue

2 个答案:

答案 0 :(得分:2)

您需要开发者帐户才能在设备中测试Xcode应用。

开发者帐户将提供证书和配置以在设备中运行应用。有2个证书开发和分发。

在您的情况下,您没有任何Apple帐户。所以也许您正在使用免费配置

请阅读以下内容以了解免费提供的内容: bloom filter

也许免费提供的功能仅限于调试模式*(从xcode运行)

答案 1 :(得分:1)

最后,我得到了直接的answer from Empatica support team,因为我从可靠的和/或官方的来源中寻求答案,所以我认为这是完美的。

还是,我要感谢Antonio的有用回答以及ScriptableHichem的信息。

Empatica E4团队的回答如下:

  

@carlosvega如果您使用的是装有iOS 11或12的iPhone,则您   应该在字符串中添加字符串NSBluetoothPeripheralUsageDescription   Info.plist文件。该示例代码已在不久前创建   隐私字符串是强制性的。   -Empatica工程团队