我是Android新手并使用Android Studio。 这是我正在尝试做的细节: 有2个设备,1& 2,有一个地理围栏。 只要 device1 进入或退出地理围栏,系统就会向 device2 发送通知。
我已经做过的是: 建立了地理围栏。在进入或退出时,通知将在本地发送到 device1 。设置了一个FCM,获得了 device2 令牌密钥,并且能够通过控制台手动向其发送通知(我也在寻找一种不使用控制台的方式)。
我尝试过另一种方式: 在 device2 上安装应用并跟踪 device1 位置,但经过一些调查后,如果不在 device1 中安装子apk,则似乎无法实现。
我也试图搜索解决方案,但它们要么没有答案,要么它不是我正在寻找的解决方案(我可能使用了错误的关键字或者搜索不够深)。因此,在标记重复之前,请指导我一个示例代码。感谢。
答案 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示例项目。