我最近开始使用Firebase Messaging,我希望其中一个客户端生成一个通知,该通知可以通过该应用程序发送给其他用户 所以通过向服务器上游发送消息,然后从那里发送消息到应用程序的其他设备似乎是一个解决方案
在哪里可以在firebase控制台上看到我的firebase上游消息
public class FirebaseNotifier extends FirebaseMessagingService {
static FirebaseMessaging fmst;
static FirebaseInstanceId fid;
static Button b1;
public void onMessageReceived(RemoteMessage remoteMessage) {
sendNotification(remoteMessage);
}
private void sendNotification(RemoteMessage remoteMessage) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
int icon = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) ? R.drawable.myicon : R.drawable.myicon;
NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
.setSmallIcon(icon)
.setContentTitle(remoteMessage.getFrom())
.setContentText(remoteMessage.getNotification().getBody())
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
public static void sendEm(AtomicInteger msid,String fms) {
fmst=MainActivity.fms;
fmst.send(new RemoteMessage.Builder(fms + "@gcm.googleapis.com")
.setMessageId(Integer.toString(msid.incrementAndGet()))
.addData("my_message", "fhdhchj")
.addData("my_action", "SAY_HELLO")
.build());
}
@Override
public void onMessageSent(String s) {
super.onMessageSent(s);
Log.i("Message is:", "" + s);
}
public void onSendError(String msgID, Exception exception) {
Log.i("message id id:"+msgID,"Exception:"+ exception.getMessage());
}
}
我正用主要按钮
来调用它public class MainActivity extends AppCompatActivity {
static EditText et;
Button b1;
static FirebaseMessaging fms;
static String senderid="";
static AtomicInteger msgId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//setSupportActionBar(toolbar);
b1=(Button)findViewById(R.id.button);
msgId= new AtomicInteger(1);
et=(EditText)findViewById(R.id.editText);
fms=FirebaseMessaging.getInstance();
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"Button Clicked",Toast.LENGTH_SHORT).show();
FirebaseNotifier.sendEm(msgId, fms.toString());
}
});
}
private boolean Validate(EditText et) {
if(et.getText().toString().length()>0) return true;
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:4)
接收使用上游API发送的消息,以实现XMPP服务器。
然后,您的XMPP服务器可以接收上游消息并将通知发送到其他设备。