- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 Apple 和 Google 的新 API 来支持 Covid 接触者追踪,如本 API document 中所述.但是当我尝试在 XCode 中使用这些 API 时,找不到这些类:
let request = CTSelfTracingInfoRequest()
如何启用这些 API?
最佳答案
适用于 iOS 的 API 受到限制。虽然您可以使用 XCode 11.5 和 iOS 13.5 针对 ExposureNotifcation 框架编写代码,但如果没有 Apple 授予您配置,您甚至无法在模拟器中运行代码配置文件与 com.apple.developer.exposure-notification
权利。 Apple 仅在手动批准流程后将此权利授予与政府卫生机构相关的开发者。
以下是有关无需 Apple 特别许可即可执行的操作的更多信息。
iOS 13.5 之前的版本不允许在规范中传输暴露通知服务信标蓝牙广告格式。从 13.5 开始,广告只能由操作系统提供——如果不使用更高级别的 API,第 3 方应用程序无法发出该广告。
从 iOS 13.5 开始,Apple 还阻止第三方应用程序直接检测这种信标格式,迫使它们使用更高级别的 API。早期版本的 iOS 允许检测这种信标格式。
然而,Android 是另一回事。
虽然谷歌在 Google Play 服务中类似地限制了这些 API 的使用,只有具有谷歌授予的特殊权限的 API key ,Android 5.0+ 版本允许第 3 方应用发送和检测曝光通知服务信标广告 那个the bluetooth specification设想:
使用免费和开源 Android Beacon Library 2.17+,你可以像这样发送这个信标:
String uuidString = "01020304-0506-0708-090a-0b0c0d0e0f10";
Beacon beacon = new Beacon.Builder()
.setId1(uuidString)
.build();
// This beacon layout is for the Exposure Notification Service Bluetooth Spec
BeaconParser contactDetectionBeaconParser = new BeaconParser()
.setBeaconLayout("s:0-1=fd6f,p:-:-59,i:2-17");
BeaconTransmitter beaconTransmitter = new
BeaconTransmitter(getApplicationContext(), contactDetectionBeaconParser);
beaconTransmitter.startAdvertising(beacon
然后像这样扫描它:
BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("s:0-1=fd6f,p:-:-59,i:2-17"));
...
beaconManager.startRangingBeaconsInRegion(new Region("All Exposure Notification Service beacons", null));
...
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
for (Beacon beacon: beacons) {
Log.i(TAG, "I see an Exposure Notification Service beacon with rolling proximity identifier "+beacon.getId1());
}
}
在Android上,即使在后台也可以进行上述传输和检测。有关详细信息,请参阅库文档。
传输和接收暴露通知服务信标的能力内置于 BeaconScope 中安卓应用。您可以将其用作帮助测试您构建的任何应用的工具。
您可以在我的博文中阅读更多信息 which shows you how to build your own app to do this.
至于 iOS,虽然在撰写本文时无法传输,但您可以在 iOS 13.4.x 及更早版本上使用如下代码扫描这些信标:
let exposureNotificationServiceUuid = CBUUID(string: "FD6F")
centralManager?.scanForPeripherals(withServices: [exposureNotificationServiceUuid], options: [CBCentralManagerScanOptionAllowDuplicatesKey: true])
...
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if let advDatas = advertisementData[CBAdvertisementDataServiceDataKey] as? NSDictionary {
if let advData = advDatas.object(forKey: CBUUID(string: "FD6F")) as? Data {
let hexString = advData.map { String(format: "%02hhx", $0) }.joined()
let proximityId = String(hexString.prefix(32))
let metadata = hexString.suffix(8)
NSLog("Discovered Exposure Notification Service Beacon with Proximity ID\(proximityId), metadata \(metadata) and RSSI \(RSSI)")
}
}
}
但是请注意,Apple 阻止了它从 iOS 13.5 beta 2 开始运行。didDiscover
上面的方法永远不会为带有曝光通知服务 UUID 的广告调用。
完全披露:我是 Android Beacon Library 开源项目的首席开发人员,也是基于该库构建的 BeaconScope 应用程序的作者。
编辑 2020 年 4 月 26 日:更新上面的答案以链接到暴露通知服务蓝牙规范的修订版 1.1 版本,根据该更改更新命名约定,并修改代码示例以显示元数据。
编辑,2020 年 4 月 30 日:更新的答案基于 Apple 发布的 iOS 13.5 beta 2 和 XCode 11.5 beta,以及 Apple 现在阻止第 3 方应用程序检测曝光通知服务信标这一事实。
2020 年 6 月 2 日编辑:根据 Apple 的 iOS 13.5 最终版本和 Google 的 Google Play 服务版本更新了答案。
关于bluetooth-lowenergy - 我可以使用 Apple 和 Google 的接触者追踪规范吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61161450/
我正在开发一个网站,在不使用任何第三方 API 的情况下使用 Firebase 云消息传递(Chrome 和 Firefox 浏览器)向我的订阅者发送推送通知。推送通知发送工作正常,但我不知道“如何跟
我在尝试追踪此 OutOfMemoryError 时遇到了非常糟糕的时间,非常感谢您的帮助。我的应用程序分为架构部分和一个模块,该模块公开一些基本的 REST WS 以及 Hibernate 进行的数
在 Android 操作系统源代码中(路径:/drivers/staging/android/binder_trace.h),我们有一个名为 binder_trace.h 的文件,并且在 /drive
我正在查看我的 CakePHP 应用程序的 error.log,并看到我定期收到此类信息: 2011-07-28 14:49:39 Warning: Warning (2): Missing argu
我收到了有关我的应用程序中内存泄漏的报告,但我无法准确追踪到底发生了什么。我有一个功能可以取出旧 View 并交换新 View 。我没有使用 NavControllers 或任何 @propertie
这是真气! >_< 我编写了一个庞大而复杂的 Haskell 库。我写了一个小测试程序,到目前为止,我已经花了大约 8 个小时试图弄清楚为什么它一直在我身上崩溃。有时 GHC 会提示“奇怪的封闭类型”
是否有系统的方法来调试导致组件在 React 中重新渲染的原因?我放置了一个简单的 console.log() 来查看它渲染了多少次,但我很难弄清楚是什么导致组件渲染多次,即在我的情况下(4 次)。是
我已经升级到 Django 1.4,现在当我运行我的开发服务器时,我收到以下警告: /home/flc/venvs/myprj/lib/python2.6/site-packages/django/v
我有一个 Web 应用程序在某处存在内存泄漏,但我无法检测到它。我已经尝试过 Chrome 开发者工具,通常效果很好,但我无法追踪负责的代码行。 Chrome 工具给了我太多信息,我无法将内存中的对象
直接从标记调用函数的好处之一是更容易跟踪所调用的内容。我想知道是否有浏览器插件或其他东西支持附加(绑定(bind))到元素的每个事件的“Goto javascript 源函数”。理想情况下,这会将我带
我在工作中使用 darcs 已经一年多了,但我一直在问自己同样的问题: 跟踪导致两个补丁之间依赖的代码行/文件/代码更改的最佳方法是什么?目前我的做法如下: 我使用 darcs changes -i
我知道以前有人问过此类问题,但我无法解决我的疑问。我有一个简单的黑白棋引擎(实际上它玩得很好),它使用下面的类来获得最佳棋步: import java.util.*; import java.util
上下文:我们正在构建用于快速交付 WPF 应用程序的框架。该框架使用 Autofac 作为 IoC 容器,还使用 Prism v1 中的区域。我们正在使用 Microsoft 的并行扩展来安排任务
有什么追踪东西的技巧吗?技术?任何可用于检查函数 x 的调用者的工具(调用堆栈的某些部分显示为 ??? 或被跳过)。 --track-origins=yes 是否会使速度变慢(当我尝试这样做时,我使用
我有一个基于 KnockoutJS 2.2.1 创建的 jQuery 网格插件。到目前为止它进展顺利,但是当插件在一个元素上初始化时,'computed' loadGrid 方法调用 3 次。 为了说
我是这种开发的新手。我正在尝试创建一个涉及 GPS 跟踪的 android 应用程序。我正在使用 Nutiteq,因为我必须使用 openstreetmap 作为默认 map 。请帮助我。 最佳答案
我希望用户能够通过我的应用程序之一跟踪他们的 friend 。该应用程序适用于音乐节。 我一直在想办法做到这一点: 让用户为设备设置昵称(与 UDID 关联),并让用户通过昵称将彼此添加到“好友列表”
有没有办法找到所有者或域名示例,如果我给谷歌的IP,我的工具发现谷歌的IP,这应该以编程方式完成地址最喜欢的编程语言将是VC++其他语言也不是问题 最佳答案 您正在寻找的关键字似乎是WHOIS 通常可
我的 VC++ 项目中有几个包含大量类的 map ,其中一些默认可构造,另一些则不能。尝试构建时,出现“没有合适的默认构造函数可用”错误。问题是错误被列为发生在 map.cpp 的第 173 行,这是
我平均工作(约 20k 行代码,Objective-C 与 C++ 混合),我正在努力寻找 EXC_BAD_ACCESS 错误。 我已经尝试了所有常见的技术(比如启用 NSZombie、guard e
我是一名优秀的程序员,十分优秀!