#android #xamarin #firebase-cloud-messaging
#Android #xamarin #firebase-cloud-messaging
Вопрос:
У меня есть приложение Xamarin для Android, которое реализует уведомления FCM точно так, как Microsoft описывает в своих документах Xamarin: https://docs.microsoft.com/en-us/xamarin/android/data-cloud/google-messaging/remote-notifications-with-fcm?tabs=windows
Приложение работает безупречно в течение многих лет. Но с момента выпуска Android 12 и требования ноября 2021 года к 30-му уровню API мы не можем отправлять уведомления небольшому числу пользователей. Firebase сообщает, что используемый нами токен FCM (который был предоставлен клиентом) не зарегистрирован или не действителен.
По крайней мере, в одном случае проблема просто исчезла через несколько дней. Но это сохраняется для других. Это не влияет на всех пользователей Android 12, но единственные люди, на которых это повлияло, — это пользователи Android 12. И пока это, похоже, затрагивает только людей, которые установлены на новом устройстве Android 12. Пользователи, которые обновились с 11 до 12, не видят проблемы.
Мы используем «старые» библиотеки Xamarin FCM, которые Microsoft упоминает в своей документации. Те, которые все еще используют onTokenRefresh и т. Д. Любые попытки использовать более новые библиотеки просто приводят к, казалось бы, неразрешимым конфликтам версий между библиотеками.
Есть идеи?
ОБНОВЛЕНИЕ: даже после обновления приложения для использования самых последних библиотек Xamarin и Firebase мы по-прежнему получаем недопустимые токены FCM из приложения.
Комментарии:
1. Это редко специфичная для Xamarin проблема, если Google API изменяет поведение. Я настоятельно рекомендую вам использовать новые пакеты FCM. Возможно, опишите, какие конфликты вы получаете?
2. Конфликты, которые я получаю, слишком абсурдны, чтобы вдаваться в них. Это похоже на DLL -ад старых дней. Исправьте только один конфликт, чтобы создать другой, который можно исправить, только нарушив то, что было исправлено. Я надеялся найти кого-нибудь, кто успешно использовал новейшие библиотеки, чтобы точно узнать, какую комбинацию библиотек они используют. И я отмечен, что документация Microsoft ссылается только на некоторые очень старые версии библиотек.
3. Я также немного сбит с толку тем фактом, что затронуты только некоторые устройства Android 12. Я даже не могу воспроизвести проблему на своих собственных устройствах или симуляторах.
4. Мы используем новейшие библиотеки FCM без проблем. Поэтому мне немного любопытно, что именно вы видите.
5. Я думаю, что я преодолел проблемы с конфликтом версий. Я только что создал совершенно новый проект и начал с нуля и добавил только последние версии библиотек, которые мне были нужны. Теперь у меня есть рабочее приложение, использующее новейшие библиотеки. Я скоро протестирую его, чтобы узнать, устраняет ли последняя версия everything проблему, с которой мы столкнулись.
Ответ №1:
Оказывается, проблема не имеет ничего общего с проблемами совместимости в библиотеках FCM. Это было вызвано изменениями в том, как веб-просмотр Android 12 отправляет файлы cookie. (Мы передали токен FCM в виде файла cookie) Что, как ни странно, повлияло только на некоторые устройства Android 12, но не на все из них. Решение состояло в том, чтобы убедиться, что мы устанавливаем файлы cookie с полным URL-адресом, таким как «https://example.org » и не просто сайт «example.org «.