Уведомления не появляются в системном трее рано после установки - PullRequest
0 голосов
/ 02 мая 2018

Если я устанавливаю свое приложение и запускаю его один раз, а затем закрываю и отправляю уведомление, ничего не происходит. Если я затем открываю приложение, оно реагирует так, как будто ему было дано уведомление, но жалуется, что некоторые ожидаемые данные отсутствуют.

Затем, если я несколько раз открою приложение и отправлю какое-нибудь уведомление, в конце концов уведомления появятся на панели задач в виде квадрата, даже если приложение полностью закрыто.

Затем, в конце концов, квадрат превращается в значок Android.

Почему системе требуется время для прогрева, прежде чем она начнет работать правильно? Разве он не знает, какой значок показывать, если не получено уведомление во время работы приложения?

Вот так код ...

В OnCreate в MainActivity в конце есть вызов ...

void HandleNotification()
{
    var intentBundler = Intent.Extras;

    if (intentBundler != null)
    {
        var jobId = intentBundler.GetString("id");

        DroidNotificationStrategy.ReceivedNotification(this, Convert.ToInt32(jobId));
    }
}

В манифесте ...

<application android:label="Connection Crew">
    <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>
</application>

Пожарная служба ...

namespace FCMClient
{
    [Service]
    [IntentFilter(new[] { "com.google.firebase.INSTANCE_ID_EVENT" })]
    public class FirebaseIIDService : FirebaseInstanceIdService
    {
        const string TAG = "MyFirebaseIIDService";

        public static string GetToken() => FirebaseInstanceId.Instance.Token;

        public override void OnTokenRefresh()
        {
            var refreshedToken = FirebaseInstanceId.Instance.Token;

            Log.Debug(TAG, "Refreshed token: " + refreshedToken);

            MessagingCenter.Send<object, (EnumDeviceType, string)>(
                this, "RegisterDevice", (EnumDeviceType.Droid, refreshedToken));
        }

    }

    [Service]
    [IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
    public class CCFirebaseMessagingService : FirebaseMessagingService
    {
        public override void OnMessageReceived(RemoteMessage message)
        {
            var appointmentId = Convert.ToInt32(message.Data["id"]);

            DroidNotificationStrategy.ReceivedNotification(this, appointmentId);
        }
    }
}

Сообщение. («xxBODYxx» заменяется.)

@"{
      ""notification"" : {
         ""body"" : ""xxBODYxx"", 
         ""title"" : ""Job"",
         ""icon"": ""ic_notification""
      }, 
       ""data"": {
         ""id"": ""#(JobId)""
      }
}

1 Ответ

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

Я думаю, что запуск из отладчика влияет на уведомления, появляющиеся в трее.

Если я установлю с использованием отладчика, сразу же убью приложение, а затем снова запущу и сразу же убью приложение, уведомления будут в порядке.

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