Flutter dilinde yazdığım projemde bildirime tıklayınca benim belirlediğim sayfayı açmasını istiyorum ama uygulama baştan başlıyor lütfen yardım eder misiniz?
functions kodum:
exports.herkeseBorcBilgisiGonder = onRequest(async (req, res) => {
try {
const { tokens, title, body } = req.body;
if (!tokens || tokens.length === 0) {
return res.status(400).send('Token listesi boş.');
}
// Bildirim mesajını oluşturma
const message = {
notification: {
title: title,
body: body,
},
data: {
click_action: 'FLUTTER_NOTIFICATION_CLICK', // Bildirim tıklama olayı
route: '/odeme', // Ödeme sayfası rotası
},
};
// Tüm token'lar için mesajları hazırlama
const messages = tokens.map(token => ({
...message,
token: token,
}));
// Tüm mesajları gönderme
const response = await fcm.sendAll(messages);
return res.status(200).send(`Toplam ${response.successCount} bildirim gönderildi, ${response.failureCount} hata oluştu.`);
} catch (error) {
console.error("Bildirimler gönderilemedi:", error);
return res.status(500).send(`Bildirimler gönderilemedi: ${error}`);
}
});
main.dart sayfam
final navigatorKey = GlobalKey<NavigatorState>();
Future _firebaseBacckgroundMessage(RemoteMessage message) async {
if (message.notification != null) {
print("Bildirim arka planda gönderildi");
}
}
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
await PushNotifications.init();
FirebaseMessaging.onBackgroundMessage(_firebaseBac ckgroundMessage);
await PushNotifications.localNotiInit();
runApp( const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
FirebaseMessaging.onMessageOpenedApp.listen((Remot eMessage message) {
bool isLoggedIn = checkUserLoggedIn();
print("Bildirim tıklandı: ${message.data}");
if (message.data.containsKey('route')) {
String route = message.data['route'];
if (!isLoggedIn) {
Navigator.push(
navigatorKey.currentContext!,
MaterialPageRoute(builder: (context) => const LoginPage()),
);
} else {
if (route == 'odeme') {
Navigator.push(
navigatorKey.currentContext!,
MaterialPageRoute(builder: (context) => const Kampanyalar()),
);
} else {
}
}
}
});
}
bool checkUserLoggedIn() {
return FirebaseAuth.instance.currentUser != null;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: const LoginPage(),
navigatorKey: navigatorKey,
debugShowCheckedModeBanner: false,
);
}
}
Flutter bildirime tıklayınca istediğim sayfayı açmak
5
●156
- 02-10-2024, 15:12:02webirinci adlı üyeden alıntı: mesajı görüntüle
functions/index.js dosyasındaki bu bölümden mi bahsediyorsunuz.
const message = {
notification: {
title: title,
body: body,
},
data: {
click_action: 'FLUTTER_NOTIFICATION_CLICK', // Bildirim tıklama olayı
route: '/odeme', // Ödeme sayfası rotası
},
}; - 02-10-2024, 15:36:47webirinci adlı üyeden alıntı: mesajı görüntüle