В нашем приложении Android / iOS Xamarin мы наблюдаем проблему с устройствами, не зарегистрированными в их темах уведомлений в системе обмена сообщениями Firebase Cloud.
Все устройства, на которых возникает проблема, являются устройствами Android, и всегда отображается сообщение об ошибке
404 {"error":"No information found about this instance id."}
Проблема возникает после обновления приложения. Приложение по-прежнему отправляет тот же токен, что и до обновления, на наши серверы для регистрации, но этот токен больше не может быть найден в FCM.
Пока не будет запущено обновленное приложение, я могу видеть зарегистрированные темы устройства через
GET https://iid.googleapis.com/iid/info/eAIWmkyJX3I:APA91bGL5QV6e[OMMITED]?details=true
, но как только оно запускается или получает уведомление, звонит та же конечная точка приводит к
404 {"error":"No information found about this instance id."}
, и приложение больше не может получать уведомления.
Уведомления pu sh обрабатываются с использованием Cross Platform PushNotificationPlugin , и кажется, что это значение CrossPushNotification.Current.Token
становится устаревшим:
Каждый раз, когда приложение запускается на экране приветствия, оно повторно регистрирует все свои темы
var pushToken = CrossPushNotification.Current.Token;
await _pushService.RegisterPushAsync(pushToken); // Custom service to register select topics through our servers
А в методе Application.App () он прослушивает изменения токена следующим образом:
CrossPushNotification.Current.OnTokenRefresh += async (s, p) =>
{
if (Settings.AppActivated) //True while user logged in
{
var pushService = _container.Resolve<IPushService>();
await pushService.RegisterPushAsync(p.Token);
}
};
На стороне сервера идентификаторы экземпляров регистрируются в их темах через
POST https://iid.googleapis.com/iid/v1/eAIWmkyJX3I:APA91bGL5QV6e[OMMITED]/rel/topics/MY_TOPIC