我希望当用户上传帖子时,通知应该以10公里半径的形式发送给用户。为此,我通过从firebase数据库检索用户纬度和经度并逐个将其发送到distanceBetween
函数以及从其上传的帖子的纬度和经度来计算用户半径。但问题是哪个用户进入radius.And我无法检索用户ID和reg Token发送通知。
这是我的代码
dataref.addValueEventListener(new com.google.firebase.database.ValueEventListener() {
@Override
public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
for (com.google.firebase.database.DataSnapshot data : dataSnapshot.getChildren())
{
datasnap = data;
}
Location.distanceBetween(Post_latitude, Post_longitude,Double.parseDouble(datasnap.child("latitude").getValue(String.class)), Double.parseDouble(datasnap.child("longitude").getValue(String.class)), results);
final double km = (results[0] / 1000);
if (km <= 10000) {
if (!String.valueOf(datasnap.getKey().toString()).equals(userID)) {
//getting the user id here
Log.d("USerID", datasnap.getKey().toString() )
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 0 :(得分:0)
我找到了解决问题的方法。 使用geofire以指定的半径保存和检索用户位置。
这是代码:
//围绕半径为0.6公里的[37.7832,-122.4056]创建一个新查询 GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(37.7832,-122.4056),0.6);
有关详细信息,请查看链接:https://github.com/firebase/geofire-java