我正在制作pheed(使用群组)应用。
我正在尝试使用pheed时通过fcm进行通知
但是我不知道获取所有uid并发送所有用户令牌。
请帮助我。
(激活了上传图像,上传pheed。问题是获取所有uid并向所有用户发送通知)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post_add);
apiService = Client.getClient("https://fcm.googleapis.com/").create(APIService.class);
Intent intent = getIntent();
group_title = intent.getStringExtra("group_title");
userid = intent.getStringExtra("userid");
userImageURL = intent.getStringExtra("userImageURL");
userName = IndexActivity.spref.getString("str_userName", "default");
fuser = FirebaseAuth.getInstance().getCurrentUser();
close = findViewById(R.id.postAdd_close);
image_added = findViewById(R.id.postAdd_image_added);
post = findViewById(R.id.postAdd_post);
description = findViewById(R.id.post_description);
storageReference = FirebaseStorage.getInstance().getReference("posts");
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
post.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
uploadImage();
notify = true;
}
});
CropImage.activity()
.setAspectRatio(2, 1)
.start(PostAddActivity.this);
reference2 = FirebaseDatabase.getInstance().getReference("Group").child(group_title);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot ds: dataSnapshot.getChildren()) {
receiver = ds.child("userList").getValue(String.class);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
reference2.addListenerForSingleValueEvent(eventListener);
final String con = description.getText().toString();
reference = FirebaseDatabase.getInstance().getReference("Users").child(fuser.getUid());
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
if(notify){
sendNotification(receiver,user.getUsername(),con);
}
notify = false;
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void sendNotification(String receiver, final String userName, final String con){
DatabaseReference tokens = FirebaseDatabase.getInstance().getReference("Tokens");
Query query = tokens.orderByKey().equalTo(receiver);
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot:dataSnapshot.getChildren()){
Token token = snapshot.getValue(Token.class);
Data data = new Data(fuser.getUid(),R.mipmap.ic_launcher,userName+": "+con,"새로운 피드",userid);
Sender sender = new Sender(data,token.getToken());
apiService.sendNotification(sender)
.enqueue(new Callback<MyResponse>() {
@Override
public void onResponse(Call<MyResponse> call, Response<MyResponse> response) {
if(response.code()==200){
if(response.body().success!=1){
//Toast.makeText(PostAddActivity.this,"Failed",Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onFailure(Call<MyResponse> call, Throwable t) {
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}