问题标签 [ancs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1051 浏览

ios - 向蓝牙设备(例如 Fitbit)发送通知

有问题的设备 (Fitbit Surge) 目前没有公开公共 BLE API,因此没有记录的与之交互的方式。

但是,它确实支持显示一些移动设备通知(仅限来电和短信 AFAIK)。我的猜测是,对于 iOS,它使用ANCS

我有兴趣通过 iOS 应用程序以编程方式使腕带振动。我想也许调度系统通知是要走的路。

我看到对于 Android,bitTicker基本上充当代理,因此例如 WhatsApp 通知作为短信通知传递给 Fitbit。

我想知道在iOS上是否也可以这样做。我正在考虑私有和公共 iOS API 解决方案(不打算将此应用程序发布到 App Store)。有没有办法以某种方式合成来电/消息通知,以便将它们传递给 Fitbit?有没有其他方法可以解决这个问题?

我将不胜感激有关此事的任何见解。

0 投票
1 回答
916 浏览

android - 如何使用 android 作为 ANCS 内容提供者?

我正在尝试演示 android 端服务(ANCS 术语中的内容提供者),它与支持 Apple 通知服务 (ANCS) 通知消费者的嵌入式设备进行通信。原因是嵌入式设备仅支持 ANCS。由于Apple公开了ANCS BLE方面的东西,这应该是可能的,我已经将该服务+相关特征添加到android端gatt服务器。嵌入式设备是 nordic nRF52,SW 是 nordic ANCS demo。演示适用于 iPhone,显然适用于 nRF 控制面板的桌面版本(如果添加了北欧提供的配置,并且如果你有 windows 机器,我没有)。

但是我似乎无法将设备与 android 绑定,这是连接之前所必需的。该广告处于受限发现模式(绑定之前),因此我无法通过设置中的常规扫描找到它。从java代码绑定也不起作用。使用 mBluetoothDevice.createBond() 我得到 ACTION_BOND_STATE_CHANGED 回调,状态为 10 (BluetoothDevice.BOND_NONE),旧状态为 11(BluetoothDevice.BOND_BONDING)。显然我需要在这里交换密钥,但不知道该怎么做。

也不知道以前是否有人做过同样的练习,但任何其他提示也将不胜感激!谢谢!

0 投票
1 回答
2092 浏览

ios - ANCS 客户端:接收通知的基本程序是什么?

我正在尝试使用 BlueZ 堆栈(最新版本,5.39)在 Linux 上的 C 中实现 ANCS 客户端。到目前为止,我可以使用 Apple 提供的服务请求 UUID 设置 BLE 广告数据。

我的设备确实显示在 iPhone (iOS 9) 设置中。我也可以连接到设备,但连接非常不稳定,这意味着有时一段时间后,当我关闭 iPhone 上的蓝牙设置子菜单时,连接就会终止。它也没有绑定,断开连接后,设备没有显示在 iPhone 上的“我的设备”下。

我看了一下hcidump,显然只是读取了一堆ATT数据,然后停了下来:

Pastebin 链接,因为它在这里没有正确格式化

连接终止后输出粘贴箱的下部。

现在,我的问题是,下一步如何创建一个接收来自 iOS 设备的通知的 ANCS 客户端?我已经阅读了无数关于 BLE 和 ANCS 的文章和示例代码,但我仍然一无所知。

我是否必须在我的 C 代码中打开一个 L2CAP 套接字才能接受来自 iPhone 的连接?我已经试过了,没有用。我还尝试使用 gatttool 连接到 iPhone,虽然它已连接,但它说“资源或设备忙”。

我会非常感谢一些正确方向的指示,关于下一步该做什么。

0 投票
1 回答
911 浏览

ios - CNContactStore NSPredicate 在一个字符串中给出 2 个联系人姓名

我正在开发一个适用于 ANCS 外部设备的应用程序。简而言之,设备会检测短信何时进入并将其告知应用程序。然后应用程序将能够通过网络服务 (Twilio) 将消息发送回 SMS 发送者。

当发送 SMS 的人在联系人中时,ANCS 设备只能看到此联系人的姓名,而不是电话号码本身。所以它只向应用程序提供这个可读的名称。如果联系人只有一个姓名(例如:“John”),则搜索联系人及其电话号码非常简单,如下所示:

但有时人们会为同一个人存储多个不同名字的联系人,例如当一条短信进来时,它可能会说它来自:“约翰或爸爸”——因为它对应于通讯录中的那 2 个联系人。 . (我们都必须在地址簿中处理此类重复)。有时在最坏的情况下可能有 3 个或更多的名字!

这就是我想来的地方:我们如何区分/制作谓词来检查这些联系人。简单的解决方案是将名称拆分为“或”字,但如果这是一个朝鲜语、德语、瑞典语等字怎么办?如果这个词属于一个联系人的名字,比如说:“屋顶上的约翰办公桌”,该怎么办?在最坏的情况下,iOS 会提供本地化的分隔符“或”吗?

有人遇到过这样的问题吗?

0 投票
2 回答
1200 浏览

android - 在 Android 上订阅 ANCS

根据此处列出的服务,我正在尝试从 Android 设备订阅服务,但无法使请求部分正常工作。尝试宣传使用7905F431-B5CE-4E99-A40F-4B1E122D00D0,但外围设备未显示在 iPhone 的蓝牙设备列表中。还使用(LE)扫描和过滤器来发现 ANCS 服务器,但运气不好。有什么提示吗?

编辑:代码

BleService.java

SampleGattAttributes.java

MainActivity.java

更新:连接到 iPhone 上宣传的服务后,我能够找到服务和特征。但是,订阅通知不会onCharacteristicChanged在 iPhone 上收到通知时触发。

update2:所有写descriptor.setValue调用都成功,依次运行。

update3:使用了此示例中的部分代码。

update4:测试设备:Nexus 5X And​​roid 6.0.1;iPhone 6S+ iOS 10.3.1

update5:BT日志

写请求 在此处输入图像描述

写响应 在此处输入图像描述

0 投票
0 回答
300 浏览

ios - 相当于 CallKit 用于收听短信接收?

当手机收到短信时,似乎很难在应用程序中获得通知。我试图在 ANCS 中寻找解决方案,但似乎我无法直接从应用程序访问它。虽然有用于通话的 CallKit。在iOS中听短信真的没有解决方案吗?

0 投票
0 回答
419 浏览

android - 在 Android 上未收到 IOS ANCS 通知

我们有一个 Android 设备,它既可以用作蓝牙同步器,也可以用作蓝牙外围设备。当我们将我们的 Android 设备作为中央设备与 IOS ANCS 连接以获取 IOS 通知时,由于 ANCS 特性是加密的,要写入特性,我们必须将 IOS 设备与蓝牙配对。现在,如果 IOS 在连接到 IOS ANCS 之前已经通过蓝牙与我的 Android 设备连接,那么我们无法写入 IOS ANCS 描述符,因此不会收到 IOS 通知。

0 投票
2 回答
179 浏览

windows - psoc 4 ble与windows通信

我想制作一个应用程序以通过 psoc 4 ble 从 iphone 获取通知。我订阅了 ANCS 服务,我收到了通知,然后我希望将这些数据发送到 windows 到 java 或 c# 应用程序。我不知道该怎么做或是否可能:如何在 psoc 和 windows 之间建立连接以发送数据。

0 投票
1 回答
422 浏览

ios - 蓝牙设备如何显示来自 iPhone 的来电?

如何处理来自 iPhone 的来电和短信,并立即将数据发送到我的蓝牙设备(手表)?我已经实现了有助于在手表显示屏上显示一些数据的特性。但我不知道如何处理来电和短信。据我了解,程序员使用 ANCS,但我不知道它是如何实现的。

0 投票
1 回答
185 浏览

ios - 当应用程序在后台并且首先在 ios 系统中连接时,如何知道何时检索连接的 ble 设备?

我们的 BLE 设备使用 ANCS 并在 ios 应用程序中作为外围设备连接。我的问题发生在手表首先在设置屏幕中连接然后它没有显示在扫描的设备中的情况下,这就是为什么它在应用程序处于后台时没有连接,因为它在应用程序之外连接,原因是 iphone 与 ble 设备绑定。虽然我可以使用retrievePeripheral 函数检索它. 但它必须手动触发,我正在寻找某种观察者或委托函数,当通过系统调用 BLE 设备时调用它,以便我可以检索外围设备。如何在应用程序处于后台并且首先在设置中连接 ble 设备时进行连接?我正在考虑的一个解决方案是运行一个计时器,它将在固定间隔后调用此 retrievePeripheral 函数,但这会消耗电池。如果有人有更好的想法,请赐教。

我已经尝试了几乎所有东西,我知道扫描功能在后台使用服务 ID 工作,但我正在谈论设备无法发现的场景,因为它首先在设置屏幕中连接。