有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Android和iOS的java通知

我想创建一个BLE设备,连接到手机并接收所有通知(短信、来电、电子邮件)

它应该是跨平台的,并且始终保持连接

我该怎么办


共 (1) 个答案

  1. # 1 楼答案

    Android和iOS在这个问题上有很大的不同

    iOS 7-8

    在iOS上,你的应用程序无法知道你何时收到短信、电子邮件等。。。因此,在手机端,您无法接收通知,然后通过BLE将其发送到手机

    (另外,你也知道iphone对后台运行的应用程序有很大的限制)

    唯一的办法就是苹果通知中心服务:Official Doc Human readable explanation

    下面是它的工作原理。让外部硬件进入中央模式(例如“主模式”,而不是通常的ppheral模式),然后让ios设备使用“服务解决方案”打开ANCS服务 这样做可能需要配对

    然后,您的设备可以连接到此服务(警告,ANCS不是标准的SIGANS1811服务!)

    无需应用程序,所有操作都在硬件端完成

    安卓4.3-4.4

    在android 5.0之前,android设备只能处于中央模式,而不能处于外围模式,因此无法模拟iOS的行为

    向BLE硬件发送通知的唯一方法是让外部硬件处于外围模式,然后创建一个专用协议,以便在中央模式下使用手机发送通知。(是的,与苹果相反)

    通过扩展NotificationListenerService来监听通知非常简单Example implementation别忘了开枪。设置。操作_通知_侦听器_设置以打开通知访问设置屏幕并授予对此应用的访问权限

    现在的问题是:由于android BLE堆栈的不同不稳定性,维护一个BLE连接非常困难,而且在后台时,你几乎无法控制你的服务的寿命,所以保持它的活力也不是一个选项。(啊,不要试图在NotificationListenerService中绑定服务,它不会工作)

    所以唯一要做的就是编写一个短的BLE类(在服务之外工作),它将快速启动连接,发送消息send Shutdown

    很多安卓手机的配对功能不稳定。因此,理想情况下,外部硬件应该在android上使用“只工作”连接(当他是外设时),在中央设备上使用配对连接(在ios上)

    和android中的BLE一样,你需要排队等待所有请求等