私は最近 Firebase Messaging を使い始めましたが、クライアントの 1 つがアプリを使用して他のユーザーに送信できる通知を生成するようにしたいので、メッセージを上流のサーバーに送信し、そこからアプリを使用して他のデバイスに送信することが解決策のように思われました
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);
}
}