[Not Solved] Push Notifications With Appwrite using FCM Provider
- 1
- 3
- Android
- Flutter
- Messaging
- Cloud
I will share code in Parts Due to limits & I am not able to create any subscriber & Getting errors
( import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:appwrite/appwrite.dart'; import 'package:appwrite/models.dart';
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); runApp(MyApp()); }
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { await Firebase.initializeApp(); print("Handling a background message: ${message.messageId}"); }
class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); }
)
class _MyAppState extends State<MyApp> { late Client client; late Messaging messaging; String? userId;
@override void initState() { super.initState(); _initializeAppwrite(); _initializeFCM(); _subscribeToTopic('66cc43930014666fb982'); }
void _initializeAppwrite() { client = Client() ..setEndpoint('https://cloud.appwrite.io/v1') ..setProject('643588ac5b13906fc980'); messaging = Messaging(client); }
Future<void> _loginAnonymously() async { try { final account = Account(client); final response = await account.createAnonymousSession(); userId = response.$id; print('User ID: $userId'); } catch (e) { print('Error logging in anonymously: $e'); } }
Future<void> _initializeFCM() async { FirebaseMessaging messaging = FirebaseMessaging.instance;
// Request permission for iOS
NotificationSettings settings = await messaging.requestPermission(
alert: true,
badge: true,
sound: true,
);
if (settings.authorizationStatus == AuthorizationStatus.authorized) {
print('User granted permission');
} else if (settings.authorizationStatus == AuthorizationStatus.provisional) {
print('User granted provisional permission');
} else {
print('User declined or has not accepted permission');
}
// Get the token for this device
String? token = await messaging.getToken();
print("FCM Token: $token");
// Listen for messages
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('Received a message while in the foreground!');
print('Message data: ${message.data}');
if (message.notification != null) {
print('Message also contained a notification: ${message.notification}');
}
});
}
Future<void> _subscribeToTopic(String topicId) async { await _loginAnonymously();
if (userId != null) {
try {
await messaging.createSubscriber(
topicId: topicId,
subscriberId: userId!,
targetId: 'your-target-id',
);
print('Subscribed to topic: $topicId');
} catch (e) {
print('Error subscribing to topic: $e');
}
} else {
print('Failed to obtain user ID');
}
}
@override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('Appwrite Messaging with FCM'), ), body: Center( child: Text('Push Notifications Setup Complete'), ), ), ); } }
targetId: 'your-target-id', user have this target?
How can I achieve this can You explain Sir I Am little bit confused about this
in "targetId" parameter you must pass the targetId associate to user, for example, user.targets.where((target) => target.providerType == 'push').first.$id
'your-target-id' isn't a valid target id
BTW, if you surround your code with three backticks (), it'll format in Discord as code
😃 I was not able to send the message coz the code was long, Btw instead please provide a solution so I can continue😂❤️
I will try this & update you in a time Thanks❤️
Again Not working
how did you do it?
you must use this for example:
target id, and the path on getAccount is user.targets[].$id
or this,
These are examples to help you understand the data to use
But I used Anonymous login... for my app
i think you can't send message to an anonymous user
targetId contains the data for send the message, and it is a required property on createSubscriber
[Not Solved] Push Notifications With Appwrite using FCM Provider
I think you can't push the notification to the anonymous user as it need FCM token which is being generated by firebase after you signup.
I would assume it would be possible, as long as the (anonymous) session is active?
If this is possible than I would love to hear the possible solution of this
Recommended threads
- Issue Related to Presence
```PresenceService: upsert error – AppwriteException: user_unauthorized, The current user is not authorized to perform the requested action. (401) ...
- Refund
i started with the free version and then switch to pro and pay the fee. Before ending of the month, i switch back to free plan. got the confirmation email t...
- Unable to Migrate from Selfhosted 1.9.5 ...
I am trying to migrate my Appwrite to the cloud however it keeps failing. Errors in the Appwrite cloud logs say: { "$id": "6a4a0b2767ba6cf5348f", "$creat...