У меня возникли проблемы с получением простого push-уведомления в мобильном приложении, использующем флаттер, с использованием firebase C # admin sdk:
Мой код c # выглядит как
private async Task SendPushNotification3Async(string val)
{
FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.FromFile(@"e:\firebase-adminsdk.json"),
});
var condition = "'SQL' in topics";
var message = new FirebaseAdmin.Messaging.Message()
{
Notification = new FirebaseAdmin.Messaging.Notification()
{
Title = "simple title",
Body = "simple message",
},
Condition = condition
};
var response = await FirebaseMessaging.DefaultInstance.SendAsync(message);
}
и на флаттерной стороне:
import 'package:flutter/material.dart';
import 'package:sqlnotifapp/widget/messaging_widget.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
final String appTitle = 'Simple Notifications';
@override
Widget build(BuildContext context) => MaterialApp(
title: appTitle,
home: MainPage(appTitle: appTitle),
);
}
class MainPage extends StatelessWidget {
final String appTitle;
const MainPage({this.appTitle});
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
title: Text(appTitle),
),
body: MessagingWidget(),
);
}
и виджет обмена сообщениями:
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:sqlnotifapp/model/message.dart';
class MessagingWidget extends StatefulWidget {
@override
_MessagingWidgetState createState() => _MessagingWidgetState();
}
class _MessagingWidgetState extends State<MessagingWidget> {
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
final List<Message> messages = [];
@override
void initState() {
super.initState();
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("onMessage: $message");
final notification = message['notification'];
setState(() {
messages.add(Message(
title: notification['title'], body: notification['body']));
});
},
onLaunch: (Map<String, dynamic> message) async {
print("onLaunch: $message");
_firebaseMessaging.subscribeToTopic('SQL');
final notification = message['data'];
setState(() {
messages.add(Message(
title: '${notification['title']}',
body: '${notification['body']}',
));
});
},
onResume: (Map<String, dynamic> message) async {
print("onResume: $message");
},
);
_firebaseMessaging.requestNotificationPermissions(
const IosNotificationSettings(sound: true, badge: true, alert: true));
}
@override
Widget build(BuildContext context) => ListView(
children: messages.map(buildMessage).toList(),
);
Widget buildMessage(Message message) => ListTile(
title: Text(message.title),
subtitle: Text(message.body),
);
}
пожалуйста, не строчку
_firebaseMessaging.subscribeToTopic ( 'SQL');
При запуске этого кода нет исключений, но также нет push-уведомлений.
Обратите внимание, что я могу получить push-уведомления из консоли Firebase
на мобильное устройство без проблем, но не из .net api.
Что мне здесь не хватает?
Также есть ли способ отправить сообщение через API в приложение для Android, используя его идентификатор приложения?
Любая помощь или идея приветствуется, спасибо