- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我知道您可以使用此服务让智能 watch 等设备拦截来自 iOS 设备的通知。但是您可以通过 OS X 在 Mac 上接收这些 iOS 通知吗?
我想让我的 OS X 程序检测到 iOS 中收到的特定通知类型。我尝试在我的 Mac 上浏览 ANCS 设备,但它没有出现。我知道你不能在 iOS 设备之间这样做,所以我想知道 iOS 和 OS X 之间是否也是如此?谢谢!
最佳答案
这绝对有可能!
这是你需要的:
CoreBluetooth
并使用 CBPeripheralManager
来宣传带有一些自定义 UUID 的虚拟服务(不是 ANCS UUID,它不会工作) .您的 Mac 需要此虚拟服务才能“查看”ANCS 服务。*Mac 上的一个应用程序,它导入 IOBluetooth
,启动一个 CBCentralManager
对象,并开始扫描。您可以这样做:
[self.centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:YOUR_CUSTOM_SERVICE_UUID]] options:@{CBCentralManagerScanOptionSolicitedServiceUUIDsKey:@[[CBUUID UUIDWithString:ANCS_SERVICE_UUID]]];
确保将自己设置为 CBCentralManager
的委托(delegate)以接收委托(delegate)回调。
当您的 Mac 在 didDiscoverPeripheral
中发现您的设备时,连接到它:[self.centralManager connectPeripheral:外设选项:nil];
这里要注意的一件非常重要的事情是,如果你想连接到它,你需要保留你的外围设备到一个属性,否则它将被释放。参见 this answer进行更详细的讨论。
在 didConnectPeripheral
中,您需要将自己设置为您所连接的 CBPeripheral
的委托(delegate),然后开始发现服务:
[外设discoverServices:nil];
(从这一点开始的所有回调都是针对CBPeripheral
)
在 didDiscoverServices
中,您应该获得可用服务的列表。如此循环遍历它们并发现每个服务的特征:
for (CBService *service in peripheral.services) {
if ([service.UUID isEqual:[CBUUID UUIDWithString:YOUR_CUSTOM_SERVICE_UUID]]) {
NSLog(@"Found your Custom Service");
}
if ([service.UUID isEqual:[CBUUID UUIDWithString:ANCS_UUID]]) {
NSLog(@"Found ANCS Service");
}
[peripheral discoverCharacteristics:nil forService:service];
}
在 didDiscoverCharacteristicsForService
中,您想要查找 3 个特征:
9FBF120D-6301-42D9-8C58-25E699A21DBD
(可通知)69D1D8F3-45E1-49A8-9821-9BBFDAAD9D9
(可写响应)22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB
(可通知)对于那些需要通知的特征,请订阅它们以获取更新:
if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:ANCS_CHARACTERISTIC_UUID]]) {
[peripheral setNotifyValue:YES forCharacteristic:characteristic];
}
如果您想检查这些特征是否已开始通知,请在 didUpdateNotificationStateForCharacteristic
中执行 if(characteristic.isNotifying)
。
您将在 didUpdateValueForCharacteristic
中使用 characteristic.value
获得实际的 NSData
更新。此处需要注意的重要一点是,您将通过通知源特性获得通知事件的通知,但这些不会包含那么多信息。如果您希望您的 Mac 为每个 iOS 通知播放声音或闪烁一些 Hue 灯或类似的东西,这就足够了。但是,对于实际的通知详细信息,它需要来自数据源特性,但您需要通过对控制点特性进行非常具体的调用来请求它们。这是真正复杂的地方,您将能够在官方ANCS Specification document中获得更多信息。 .
如果您想要快捷方式或了解其他人是如何做到的,请查看这些 Github 存储库:
请小心,因为您可能会在其中一些实现中发现错误,主要是在处理 ANCS 数据源发送的数据时(我必须通过自己的错误处理来发挥创意)。
*** 有些人可能会争辩说您可以使用 "Service Solicitation"在没有在 iOS 设备上运行的应用程序和/或没有广告虚拟服务的情况下公开 ANCS(请参阅步骤 2 中的 options
参数),但我没有取得那么大的成功所以也许有我缺少的东西。
关于ios - 通过 OS X 的 Apple 通知中心服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20650366/
一直以来中国版Apple Watch心不支持心电图功能,不过近日Apple Watch心电图终于在国行版上线了!那么Apple Watch心国内版心电图要如何使用呢?下面一起来看看吧! App
我正在尝试将“使用 Apple 登录”添加到我现有的 App ID。检查启用它的选项后,显示以下弹出窗口:带有此消息: If you're enabling an App ID for the fir
我有一个并发症,可能需要每 5 分钟更新一次。这很容易总结为每天 120 次更新。有没有办法只在用户唤醒 watch 时更新? 最佳答案 我认为您的问题的答案是否,目前没有办法只在用户唤醒 watch
我们正在测试新 Sign in with Apple我们的应用程序的功能,并且在初始请求时,我们会提供用户的全名和电子邮件地址(如果用户启用了这些选项)。 但是在随后的请求中,此数据不仅提供 iden
在我的苹果 watch 扩展中,我想使用长按手势功能。是否有任何 api 等效于 UILongPressGestureRecognizer。我的要求是,在 watch 扩展上,我有表格想要长按单元格,
有没有办法以编程方式显示苹果 map 中多个点之间的路线,如谷歌地图? 最佳答案 正如 MKMapItem 文档所述: If you specify the MKLaunchOptionsDirect
我一直在互联网上关注很多教程来学习如何设置并发症。按预期设置并发症我没有问题。 直到初始时间线条目过期。 12 小时后,我不知道如何更新它以保持并发症的存在。我将在下面分享我拥有的所有内容,希望有人可
我看到一本书的描述...... 书上说 /^Apple/ 会匹配字符串开头有一个 Apple 的字符串。所以它将匹配 Apple Apple1 AppleApple AppleABC ...... 书
众所周知,您可以禁止从允许接收 Apple 通知的应用程序接收通知。但是有谁知道禁用是在本地进行的(忽略 Apple 发送到应用程序的通知),还是 Apple 停止从它的服务器向您发送通知? 最佳答案
我有一个 Apple id,我正在构建一个使用 Apple 推送通知服务的应用程序,但我对此有点困惑。 Apple 执行此过程是否收费?它可以在安装了我的应用程序的特定数量的设备上运行是否有任何限制?
我正在制作一个音频播放器应用。 在苹果的音乐应用中,如果音乐专辑或播客没有插图,则显示音符图像或播客图标图像而不是插图。 我想做同样的事情。 我可以在我的应用程序中使用苹果音乐应用程序中的图像吗? 苹
我有一个自定义框架,我正在归档以在另一个项目中使用。更新到 Xcode11 后,我在使用该框架的项目中收到以下错误。 找不到目标“x86_64-apple-ios-simulator”的模块“MyCu
我有一个在 iOS 上运行良好的应用程序,但是当使用催化剂运行时,如果我在 macOS 上滑动到另一个虚拟桌面,然后再返回大约 10 次,它会间歇性地崩溃。它主要发生在 UICollectionVie
我正在使用 Xcode 开发 Apple Watch 应用程序。我想在屏幕的左上角放置一些文本,与列出时间的位置相邻。 当我将标签向上拖动到屏幕的一部分时,它会自动向下对齐。 我看到大多数 Apple
我似乎找不到在哪里设置我的 Apple Watch 应用程序的产品名称。我确实看到了产品名称选项,但更新它没有任何作用。也看不到文档中的任何内容 最佳答案 为了让您的应用程序名称在 iPhone 上的
问题:如何在我的服务器产品的安装程序中安全地包含推送通知所需的 SSL 证书? 背景:Apple 推送通知要求客户端 SSL 证书位于向 Apple 发出调用的服务器上。 我的产品采用传统的客户端/服
我已经在我的网站上实现了 Sign In with Apple。但问题是它只适用于我开发者的 Apple ID。 我尝试在同一环境中使用我的个人 Apple ID,并且登录过程也运行良好。 但是,当真
我的苹果触摸图标中的白色背景变黑了??我的白色背景不透明。该图标有一个白色三角形、红色圆圈和黑色文本。我唯一能辨认出来的是白色三角形和红色圆圈。知道是什么导致了这种情况以及如何使图标保持白色背景吗?
我正在考虑制作一个使用加速度计的 watchOS2 应用程序。如果应用程序在后台运行,它是否仍然能够接收来自加速度计或 CMMotionManager 的输入? 最佳答案 只有当 watchOS2 应
我想切换 Apple App Loader 使用的 Apple ID。 我找不到更改应用程序本身使用的帐户的方法。谷歌搜索没有带来任何有用的信息。当我启动加载程序应用程序时,它给我一个错误:“...您
我是一名优秀的程序员,十分优秀!