Rank 3: Container
I will share code in Parts Due to limits & I am not able to create any subscriber & Getting errors
Votes
1
Replies
24
Participants
3
Messages
25
Rank 3: Container
I will share code in Parts Due to limits & I am not able to create any subscriber & Getting errors
Rank 3: Container
( 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 _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
print("Handling a background message: ${message.messageId}");
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
)
Rank 3: Container
class _MyAppState extends State {
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 _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');
}
}
Rank 3: Container
Future _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 _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?
Rank 4: Virtual Machine
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
Rank 4: Virtual Machine
😃 I was not able to send the message coz the code was long, Btw instead please provide a solution so I can continue😂❤️
Rank 4: Virtual Machine
I will try this & update you in a time Thanks❤️
Rank 4: Virtual Machine
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
Rank 4: Virtual Machine
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
Rank 4: Virtual Machine
Oo may b! that's why I am not able to do this stuff!
Rank 4: Virtual Machine
[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