У вас нет возможности получить идентификатор Firebase с помощью AppCenter.
У вас есть два выхода из этого:
1. Пропустите использование AppCenter для push-уведомлений в вашем приложении. Вам нужно будет реализовать взаимодействие с Firebase на каждой поддерживаемой платформе в соответствии с документацией. Я могу поделиться несколькими советами, если вы выберете эту опцию.
2. Убедите бэкэнд-команду использовать API AppCenter для отправки отдельных уведомлений pu sh https://openapi.appcenter.ms/# / push / Push_Send
Я знаю каждый из этих решений противоречит одному из ваших требований. Но вам придется выбрать только один сервис pu sh, AppCenter или Firebase, для вашего проекта и придерживаться его. Лично я голосую за Firebase, выучил его нелегко.
ОБНОВЛЕНО
В большинстве случаев Документация Firebase ваш лучший друг при переключении в FCM.
На стороне приложения:
Настройка клиента Firebase для iOS и для Android.
Некоторые уловки из моего опыта:
Android:
Вам нужно будет прослушать изменения Firebase InstanceID в потомке FirebaseMessagingService
и сохранить его для дальнейшего использования. , Он недоступен, когда вам это нужно, как в AppCenter.
У моей активности LaunchMode = LaunchMode.SingleTop
, и я переопределяю два метода для обработки pu sh в зависимости от состояния приложения, когда оно появилось: void OnNewIntent(Intent intent)
и void OnPostCreate(Bundle savedInstanceState)
. Это может быть не ваш случай, потому что я также справляюсь с тихими толчками. Чтобы проверить, содержит ли намерение pu sh из запуска Firebase intent?.GetStringExtra("google.message_id") != null
.
iOS:
Pu sh уведомления не будут работать на симуляторах iOS, и на этапах инициализации может произойти sh ваше приложение при запуске на симуляторе. Я создал __IOS_SIMULATOR__
константу рядом с __IOS__
и DEBUG
в конфигурации Debug|iPhoneSimulator
в файле csproj. И использовал его в AppDelegate.cs следующим образом:
#if !__IOS_SIMULATOR__
new FirebaseCloudMessagingInitializer().Init();
#endif
AppDelegate
предлагает два метода для переопределения void ReceivedRemoteNotification(UIApplication application, NSDictionary userInfo)
и void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
. Я использовал первый в начале и столкнулся с крайними случаями, когда он не вызывался. Поэтому мне пришлось переключиться на переопределение последнего. Но не следуйте этому совету вслепую, проверьте, что лучше всего подходит для ваших нужд.
Кроме того, остерегайтесь https://github.com/firebase/firebase-ios-sdk/issues/2438, я не уверен, было ли это уже исправлено, так как мне пришлось иметь дело с этим. Если он все еще там, примените исправление от https://github.com/firebase/firebase-ios-sdk/issues/2438#issuecomment -469472087
На стороне сервера:
https://fcm.googleapis.com/fcm/send - это так называемый устаревший протокол, вместо него используйте HTTP v1
POST https://fcm.googleapis.com/v1/projects/project_name/messages: send . Изучите документацию .
Как авторизовать запрос на отправку
Как составить pu sh содержимое