Android Studio:当此设备触发某个条件时,向其他设备发送通知

时间:2018-03-21 08:07:03

标签: android android-studio push-notification

我是Android新手并使用Android Studio。 这是我正在尝试做的细节: 有2个设备,1& 2,有一个地理围栏。 只要 device1 进入或退出地理围栏,系统就会向 device2 发送通知。

我已经做过的是: 建立了地理围栏。在进入或退出时,通知将在本地发送到 device1 。设置了一个FCM,获得了 device2 令牌密钥,并且能够通过控制台手动向其发送通知(我也在寻找一种不使用控制台的方式)。

我尝试过另一种方式: 在 device2 上安装应用并跟踪 device1 位置,但经过一些调查后,如果不在 device1 中安装子apk,则似乎无法实现。

我也试图搜索解决方案,但它们要么没有答案,要么它不是我正在寻找的解决方案(我可能使用了错误的关键字或者搜索不够深)。因此,在标记重复之前,请指导我一个示例代码。感谢。

2 个答案:

答案 0 :(得分:0)

我认为你可以通过一个简单的API(休息或其他)来实现这一目标

您设置了Device1的地理围栏,而不是在本地发送通知,您可以调用API来说"您好我是设备1,我正在进入/退出该区域"

一旦API收到来自Device1的此通知,就需要向Device2发送类似" Hello Device1已进入/退出该区域的通知"

如果没有两个APK(或一个具有不同模式/角色的APK)并且没有API

,我怎么看不到这一点?

答案 1 :(得分:0)

首先,将设备注册到主题

FirebaseMessaging.getInstance().subscribeToTopic("DeviceRecievers");

然后向firebase api https://fcm.googleapis.com/fcm/send

发送帖子请求
//HEADERS
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GB,./,Udno5aA

//BODY
{
  "to": "/topics/DeviceRecievers",
  "data": {
     "message": "Device2 enter blah blah!",
  }
}

然后处理扩展FirebaseMessagingService

的类的结果

检查this作为实施fcm的指南。希望这有帮助

编辑:

设置标题

myURLConnection.setRequestProperty ("Authorization", mAuth);
myURLConnection.setRequestProperty("Content-Type", "application/json");

设置帖子正文

String str =  "{\"x\": \"val1\",\"y\":\"val2\"}";
byte[] outputInBytes = str.getBytes("UTF-8");
OutputStream os = conn.getOutputStream();
os.write( outputInBytes );    
os.close();

使用httpUrlConnection检查this示例项目。