2017-08-08 71 views
0

我希望當用戶上傳帖子時,通知應發送給10公里範圍內的用戶。爲此,我通過從Firebase數據庫中檢索用戶經度和緯度,並將它們一起發送到distanceBetween函數以及上傳文章的經緯度來計算用戶半徑。但問題在於哪個用戶進入了radius.And我無法檢索用戶標識並註冊Token來發送通知。我想要計算用戶半徑並在android中檢索用戶ID Firebase

這裏是我的代碼

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) { 

        } 
       }); 

Here is my database image

+0

爲什麼不計算所需的經度和緯度範圍在數據庫中的用戶。創建一個查詢,該查詢僅返回該半徑內的用戶(及其標記),然後向所有這些用戶發送通知。查看Firebase文檔以瞭解如何向多個用戶發送通知。 – Barns

+0

發送通知不是問題,但事情是我無法創建你正在說的東西。創建一個計算並返回僅需要的TOKENS的查詢。 –

+0

我不太明白。你不確定如何計算距離?或者你不確定如何編寫查詢? – Barns

回答

0

我發現我的問題的解決方案。 使用geofire以指定半徑保存和檢索用戶位置。

這裏是代碼:

//創建圍繞一個新的查詢[37.7832,-122.4056] 0.6公里半徑 GeoQuery geoQuery = geoFire.queryAtLocation(新GeoLocation中(37.7832,-122.4056),0.6 );

詳細檢查鏈接:https://github.com/firebase/geofire-java