Я создал приложение для Android, используя Flutter и Firebase. Я использовал go_router для настройки всей навигации и глубоких ссылок. Глубокая ссылка работает правильно, когда я нажимаю на ссылку (скажем, вставленную в WhatsApp). Однако когда я отправляю уведомление, я получаю уведомление, но когда я нажимаю на него, вместо перехода на соответствующую страницу оно просто открывает приложение.
Вот соответствующие фрагменты кода, предложенные codelabs.
Глобальная область действия
// TODO: Add stream controller
final _messageStreamController = BehaviorSubject();
// TODO: Define the background message handler
@pragma('vm:entry-point')
Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
if (kDebugMode) {
print("Handling a background message: ${message.messageId}");
print('Message data: ${message.data}');
print('Message notification: ${message.notification?.title}');
print('Message notification: ${message.notification?.body}');
}
}
Внутри основного (перед вызовом приложения запуска)
final messaging = FirebaseMessaging.instance;
final settings = await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true,
);
if (kDebugMode) {
print('Permission granted: ${settings.authorizationStatus}');
}
String? token = await messaging.getToken();
token = await messaging.getToken();
if (kDebugMode) {
print('Registration Token=$token');
}
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
if (kDebugMode) {
print('Handling a foreground message: ${message.messageId}');
print('Message data: ${message.data}');
print('Message notification: ${message.notification?.title}');
print('Message notification: ${message.notification?.body}');
}
_messageStreamController.sink.add(message);
});
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
Внутри моего класса приложения
Future setupInteractedMessage() async {
RemoteMessage? initialMessage =
await FirebaseMessaging.instance.getInitialMessage();
if (initialMessage != null) {
_handleMessage(initialMessage);
}
FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
}
void _handleMessage(RemoteMessage message) {
RemoteNotification? notification = message.notification;
if (kDebugMode) {
print("notification: $notification");
print("message data: ${message.data}");
}
if (message.data['type'] == 'newArticle') {
final channelId = message.data['channelId'];
final articleId = message.data['articleId'];
context.go('/RMYCHANNELS/ROneChannel/$channelId}');
}
}
@override
void initState() {
super.initState();
setupInteractedMessage();
tokenListener =
FirebaseMessaging.instance.onTokenRefresh.listen((fcmToken) {
// final user = FirebaseAuth.instance.currentUser;
// if (user != null) {
// AppUser.addToken(user.uid, fcmToken);
// }
// Note: This callback is fired at each app startup and whenever a new
// token is generated.
});
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... ns-but-sta
Пытаюсь перейти по глубокой ссылке при нажатии на уведомление, но приложение открывается, но остается на первом экране. ⇐ Android
Форум для тех, кто программирует под Android
1721975048
Anonymous
Я создал приложение для Android, используя Flutter и Firebase. Я использовал go_router для настройки всей навигации и глубоких ссылок. Глубокая ссылка работает правильно, когда я нажимаю на ссылку (скажем, вставленную в WhatsApp). Однако когда я отправляю уведомление, я получаю уведомление, но когда я нажимаю на него, вместо перехода на соответствующую страницу оно просто открывает приложение.
Вот соответствующие фрагменты кода, предложенные codelabs.
Глобальная область действия
// TODO: Add stream controller
final _messageStreamController = BehaviorSubject();
// TODO: Define the background message handler
@pragma('vm:entry-point')
Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
if (kDebugMode) {
print("Handling a background message: ${message.messageId}");
print('Message data: ${message.data}');
print('Message notification: ${message.notification?.title}');
print('Message notification: ${message.notification?.body}');
}
}
Внутри основного (перед вызовом приложения запуска)
final messaging = FirebaseMessaging.instance;
final settings = await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true,
);
if (kDebugMode) {
print('Permission granted: ${settings.authorizationStatus}');
}
String? token = await messaging.getToken();
token = await messaging.getToken();
if (kDebugMode) {
print('Registration Token=$token');
}
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
if (kDebugMode) {
print('Handling a foreground message: ${message.messageId}');
print('Message data: ${message.data}');
print('Message notification: ${message.notification?.title}');
print('Message notification: ${message.notification?.body}');
}
_messageStreamController.sink.add(message);
});
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
Внутри моего класса приложения
Future setupInteractedMessage() async {
RemoteMessage? initialMessage =
await FirebaseMessaging.instance.getInitialMessage();
if (initialMessage != null) {
_handleMessage(initialMessage);
}
FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
}
void _handleMessage(RemoteMessage message) {
RemoteNotification? notification = message.notification;
if (kDebugMode) {
print("notification: $notification");
print("message data: ${message.data}");
}
if (message.data['type'] == 'newArticle') {
final channelId = message.data['channelId'];
final articleId = message.data['articleId'];
context.go('/RMYCHANNELS/ROneChannel/$channelId}');
}
}
@override
void initState() {
super.initState();
setupInteractedMessage();
tokenListener =
FirebaseMessaging.instance.onTokenRefresh.listen((fcmToken) {
// final user = FirebaseAuth.instance.currentUser;
// if (user != null) {
// AppUser.addToken(user.uid, fcmToken);
// }
// Note: This callback is fired at each app startup and whenever a new
// token is generated.
});
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78796487/trying-to-go-into-a-deep-link-on-clicking-a-notification-but-app-opens-but-sta[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия