PU SH Уведомления в формах Xamarin с помощью Microsoft.AppCenter - PullRequest
2 голосов
/ 07 февраля 2020

В: Я использую формы XAMARIN с Microsoft.AppCenter. Как получить идентификатор устройства firebase с помощью API AppCenter для отправки уведомлений pu sh на мобильные клиенты (Android / IOS) из моего бэкэнда?

Внешний интерфейс (требования) 1. XAMARIN Forms 2. Microsoft.AppCenter 3. Microsoft.AppCenter.Push 4. ДОЛЖЕН использовать AppCenter для получения идентификатора устройства FireBase. 5. AppCenter.GetInstallIdAsyn c () не будет работать для моего бэкэнда. Мне нужен FireBaseDeviceID 6.

Backend (требования) 1. Я должен сделать вызов, используя https://fcm.googleapis.com/fcm/send POST-запрос FireBase.

У меня есть внутренний сервер, который должен отправить pu sh напрямую в firebase. НЕ через AppCenter. Мне нужен DeviceID firebase для каждого устройства, на которое я хочу отправить. У меня это работает для отправки на все устройства для моего приложения. Но мне также нужно go для конкретного c устройства, которое было зарегистрировано через AppCenter. Вот почему мне нужны мои интерфейсные приложения, чтобы получить FireBase DeviceID для PU SH.

1 Ответ

2 голосов
/ 08 февраля 2020

У вас нет возможности получить идентификатор 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 содержимое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...