Как реализовать push-уведомление для xamarin android - PullRequest
0 голосов
/ 22 мая 2018

Я пытался следовать руководству: Push-уведомления для Xamarin.Android (часть iOS уже работает)

Но я получаю следующую ошибку во время сборки:

Задаче «ProcessGoogleServicesJson» не задано значение для обязательного параметра «ResStringsPath».ServiceToolStandard.Android

Что у меня есть до сих пор:

  • Я создал проект Firebase
  • FirebaseConsole:
    • скачал файл google-services.json
    • скопировал устаревший ключ сервера
  • Azure:
    • создан концентратор уведомлений
    • вставлен ключ устаревшего сервера
  • Приложение Xamarin Forms (Android):
    • Имя пакета AndroidManifest == имя пакета проект firebase
    • Я установилПакеты nuget: Xamarin.GooglePlayServices.Base, Xamarin.Firebase.Messaging и Xamarin.Azure.NotificationHubs.Android
    • добавили файл google-services.json в проект и выбрали действие по сборке для GoogleServiceJson
    • добавил часть получателя в AndroidManifest *
    • Затем создал классы Constants, MyFirebaseIIDService, MyFirebaseMessagingService и отредактировал MainActivity

после этого в учебном пособии написано «создайте свой проект / запустите ваше приложение ...», и я получаю сообщение об ошибке.

* здесь я не совсем уверен, что заполнять в $ {applicationId}:

<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
  <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
  <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    <category android:name="${applicationId}" />
  </intent-filter>
</receiver>

Спасибо за помощь!

1 Ответ

0 голосов
/ 23 мая 2018

Так что я не совсем уверен, почему я получил эту ошибку.Но после обновления Visual Studio с v15.7.1 до v15.7.2 ошибка исчезла.Может быть, что перезапуск Visual Studio был решением?В учебном пособии говорится, что вам нужно перезапустить против, если вы не можете выбрать действие сборки "GoogleServiceJson".Возможно, вам все равно придется его перезапустить.

Для android: name = "$ {applicationId}" Я использовал то же самое, что и в "package" из строки "manifest" в AndroidManifest.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="3" android:versionName="1.2" package="com.xxxxx.ServiceToolStandard" android:installLocation="auto">
[...]
<application android:label="ServiceToolStandard" android:icon="@drawable/icon">
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
            <category android:name="com.xxxxx.ServiceToolStandard" />
        </intent-filter>
    </receiver>
</application>

Теперь я могу собрать и запустить приложение.Также push-уведомления от Azure - «Тестовая отправка» получены правильно.

...