#android #firebase #firebase-realtime-database #notifications #openurl
# #Android #firebase #firebase-база данных в реальном времени #уведомления #openurl
Вопрос:
##### когда я нажимаю на уведомление, приложение снова открывается, я хочу открыть определенный URL-адрес после нажатия на уведомление. #####
! [https://drive.google.com/open?id=1YIoLK3039IbtswnSdc5k7TKbp6UPhWKf ] [смотрите изображение здесь] 1
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Intent iA = new Intent(this, MainActivity.class);
iA.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,iA,PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
notificationBuilder.setContentTitle("FCM NOTIFICATION");
notificationBuilder.setContentText(remoteMessage.getNotification().getBody());
notificationBuilder.setAutoCancel(true);
notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
notificationBuilder.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0,notificationBuilder.build());
}
}
Комментарии:
1. сделайте ожидающую трансляцию намерения, а затем на этой трансляции в приемнике откройте URL
2. возможно, это отредактированное сообщение поможет вам понять мой вопрос.
3. вместо
.getActivity
этого вы можете создать широковещательную рассылку, затем получить ее с помощью какого-либо широковещательного приемника и открыть в нем URL. Так что в основном ничего нового в моем комментарии. В чем проблема? Вы не знаете, как сделать трансляцию?4. да, я не знаю, как транслировать.
5. Асиф Рахман поделился еще лучшим способом, проверьте его ответ
Ответ №1:
Вы можете использовать ожидающее намерение, подобное этому, в своем уведомлении:
Intent notificationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT);
Комментарии:
1. Это должно сработать, возможно, вы делаете это неправильно. Кстати, ваше уведомление не будет работать на устройствах Oreo и выше, поскольку вы не использовали канал уведомлений.
Ответ №2:
Вы можете использовать метод, подобный этому, и просто передавать аргументы
void openUrl(@NonNull RemoteMessage remoteMessage, Context context, String title, String body, String commingUrl){
Intent notificationIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(commingUrl));
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context,CHANNEL_ID)
.setSmallIcon(R.drawable.notification)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
notificationBuilder.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0,notificationBuilder.build());
}
и вызовите метод внутри onMessageReceived
метода; вот так просто измените свои переменные
String title = Objects.requireNonNull(remoteMessage.getNotification()).getTitle();
String text = remoteMessage.getNotification().getBody();
String dataKey = remoteMessage.getData().get("title");
openAnotherApp(remoteMessage,getApplicationContext(),title,text,
remoteMessage.getData().get("title"));