Как внедрить Firebase Messaging в приложение Xamarin.Android? - PullRequest
0 голосов
/ 12 декабря 2018

Я делаю свое приложение для Android, используя Xamarin.Android.Я хочу реализовать push-уведомления, я пытаюсь сделать это с Firebase, следуя этому руководству: https://docs.microsoft.com/en-us/xamarin/android/data-cloud/google-messaging/remote-notifications-with-fcm?tabs=windows Однако это руководство и другие по той же теме, похоже, устарели.Когда я создаю новый проект в Firebase Console и нажимаю добавить в приложение для Android, я вижу инструкцию для Android Studio, Unity и веб-приложения.Нет инструкции для Xamarin.Когда я пытаюсь следовать инструкциям для Android Studio, я могу получить файл google-services.json, но не могу выполнить части 3 и 4 (Добавление Android SDK и Тестирование подключения), потому что они предназначены для простой разработки.Как использовать Firebase Cloud Messaging в приложении Xamarin.Android или Есть ли другой способ добавить push-уведомления для моего приложения?

Обновление:

Я скачал новый файл google-services.json из консоли Firebase-> Настройки моего проекта, очистили решение, пересоберите его и удалите приложение с устройства.Когда я тестирую приложение на устройстве и нажимаю кнопку «Журнал токена», токен в выводе журнала пуст, после чего он выдает мне: D / FirebaseInstanceId (14477): сбой фоновой синхронизации: ВРЕМЯ, повторите попытку через 10 с.Так что теперь я не могу получить токен, или, может быть, я не могу его обновить.

Я проверил следующее:

  • Имя пакета моего проекта совпадает с именем пакета в приложении Firebase
  • google-services.json Действие сборки установлено в GoogleServicesJson
  • Службы Google Play доступны на моем устройстве (Samsung SM-A500F Android 6.0 API 23), я также проверял это на других устройствах и все еще не работает

Я имею дело с этимПроблема долгое время, если вам нужна какая-либо другая информация, пожалуйста, спросите меня.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Я последовал примеру Microsoft, который вы упомянули, и у меня возникла та же проблема.Выполняя поиск в другом примере, я обнаружил, что в коде отсутствует класс, так что все готово.

Просто убедитесь, что он находится рядом с классом MyFirebaseIIDService в корне проекта Android.Это решило мою проблему.

[Service]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
public class MyFirebaseMessagingService : FirebaseMessagingService
{
    const string TAG = "MyFirebaseMsgService";

    public override void OnMessageReceived(RemoteMessage message)
    {
        Log.Debug(TAG, "From: " + message.From);

        var body = message.GetNotification().Body;
        var title = message.GetNotification().Title;
        Log.Debug(TAG, "Notification Message Body: " + body);
        SendNotification(body, title, message.Data);
    }

    void SendNotification(string messageBody, string Title, IDictionary<string, string> data)
    {
        var intent = new Intent(this, typeof(MainActivity));
        intent.AddFlags(ActivityFlags.ClearTop);
        foreach (var key in data.Keys)
        {
            intent.PutExtra(key, data[key]);
        }

        var pendingIntent = PendingIntent.GetActivity(this, MainActivity.NOTIFICATION_ID, intent, PendingIntentFlags.OneShot);

        var notificationBuilder = new NotificationCompat.Builder(this, MainActivity.CHANNEL_ID)
                                  .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification)
                                  .SetContentTitle(Title)
                                  .SetContentText(messageBody)
                                  .SetAutoCancel(true)
                                  .SetContentIntent(pendingIntent);

        var notificationManager = NotificationManagerCompat.From(this);
        notificationManager.Notify(MainActivity.NOTIFICATION_ID, notificationBuilder.Build());
    }


}
0 голосов
/ 12 декабря 2018

Все, что вам нужно от консоли Firebase, - это файл google-services.json.Получив это, проигнорируйте инструкции, связанные с консоли Firebase, и используйте документ с инструкциями Microsoft, который вы связали, например: https://docs.microsoft.com/en-us/xamarin/android/data-cloud/google-messaging/remote-notifications-with-fcm?tabs=windows

В консоли Firebase убедитесь, что имя пакета в консоли Firebase совпадаетимя пакета вашего приложения.

...