Пытаюсь перейти по глубокой ссылке при нажатии на уведомление, но приложение открывается, но остается на первом экране.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Пытаюсь перейти по глубокой ссылке при нажатии на уведомление, но приложение открывается, но остается на первом экране.

Сообщение 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.
});
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... ns-but-sta
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»