Вкратце: Уведомления Firebase, отправленные через Firebase Cloud Functions, показывают, что сообщение отправлено. Однако сообщение не получено на устройство. (Проверено только на Android. Не знаю об iOS)
Здравствуйте, я работаю над проектом Ionic 3, который использует Firebase Cloud Firestore, Cloud Functions и другие службы Firebase.
Рабочий процесс приложения:
При создании нового документа (как в новом резервировании) административный SDK должен отправить push-уведомление на конкретное устройство, которое должно прибыть на устройство.
Проблема:
При проверке журнала облачных функций он показывает, что сообщение успешно отправлено и триггерные функции завершены без каких-либо ошибок. Но сообщения пока не поступало. Однако при отправке сообщения из консоли уведомлений Firebase каждое сообщение доставляется идеально.
Код:
index.ts (облачные функции)
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp(functions.config().firebase);
exports.notifyOnNewBooking = functions.firestore
.document('users/{userId}/bookings/{bookingId}')
.onCreate( event => {
const bookingData = event.data.data();
// construct notification message here
const message = {
notification: {
title: 'Reservation confirmed!',
body: 'Your reservation at someplace at sometime is confirmed',
icon: 'https://image.ibb.co/iBwekx/icon.png'
}
};
// send notification with message right away
return admin.messaging().sendToDevice(bookingData.deviceFCMToken, message, {priority: 'high'})
.then(resp => {
console.log("sent successfully", resp);
})
.catch(err => {
console.error("could not send notification", err);
});
});
app.component.ts (ионный)
...
// Ionic Native wrapper
import { FCM } from '@ionic-native/fcm';
....
@Component({
template: `
....
....
`
})
export class MyApp {
...
constructor(..., private fcm: FCM) {}
ngOnInit() {
this.fcm.onNotification()
.subscribe(resp => {});
}
}
Журнал Firebase Cloud Functions показывает следующее:
Информация ионного интерфейса командной строки
cli packages: (/usr/local/lib/node_modules)
@ionic/cli-utils : 1.19.1
ionic (Ionic CLI) : 3.19.1
System:
Node : v9.3.0
npm : 5.5.1
OS : macOS High Sierra
Misc:
backend : pro
Зависимости package.json Cloud Functions
"dependencies": {
"@google-cloud/functions-emulator": "^1.0.0-beta.3",
"firebase-admin": "~5.8.1",
"firebase-functions": "^0.8.1",
"firebase-tools": "^3.17.4",
"global": "^4.3.2"
},
config.xml
<plugin name="cordova-plugin-fcm" spec="^2.1.2">
<variable name="SENDER_ID" value="845539284400" />
</plugin>
Примечание. В корневом компоненте приложения есть только одна подписка. И я использую тарифный план Firebase Spark, который бесплатен, но часто уведомляет в журнале, что - Учетная запись для выставления счетов не настроена. Внешняя сеть недоступна, и квоты сильно ограничены. Настройте платежный аккаунт, чтобы снять эти ограничения.
onNotification()
, а не в панели уведомлений системы, которую я хочу. Я не знаю, предполагалось ли это поведение или что. - person somnathbm   schedule 06.03.2018