Удаленное уведомление Android воссоздает действие (Xamarin C#)

Я использую Firebase для создания удаленного уведомления для своего приложения.

Моя цепочка действий выглядит следующим образом

Splash Activity (режим запуска SingleTask, NoHistory = True)

звонки

Активность при входе в систему (Стандартный режим запуска (по умолчанию), NoHistory = True)

звонки

Основное действие (режим запуска SingleTask, NoHistory = False)

Если я помещу свое приложение в фоновом режиме (основное действие приостановлено) и перезапущу его с рабочего стола, событие Resume сработает в основном действии, и все будет хорошо.

Однако, если я размещаю приложение в фоновом режиме (основное действие приостановлено) и выбираю уведомление для приложения из списка уведомлений на рабочем столе, срабатывает метод создания действия Splash.

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

Спасибо


person MHugh    schedule 23.10.2017    source источник
comment
Я обнаружил, что установка NoHistory=False в основном действии дает мне поведение, которое я искал, т. е. создание теперь не срабатывает, но возобновляется. Однако. поскольку я пытаюсь обработать уведомление, я пытаюсь передать данные Intent из действия Splash в основное действие. Это работает, если действие создано, но теперь я обошел это, чтобы просто возобновить существующее действие, намерение с данными уведомления больше не передается. Теперь возникает вопрос; как передать намерение деятельности, которая возобновляется, а не создается?   -  person MHugh    schedule 23.10.2017


Ответы (1)


как передать намерение деятельности, которая возобновляется, а не создается?

Вы должны реализовать OnNewIntent (намерение намерения) в вашем MainActivity. Затем вы можете использовать это, чтобы установить «текущее» намерение в качестве нового намерения.

protected override void OnNewIntent(Intent intent)
{
    if (intent != null)
        Intent = intent;
    base.OnNewIntent(intent);
}

Затем в OnResume() вы можете использовать намерение для восстановления данных уведомлений.

Intent intent = Intent;
person Eren Shen    schedule 24.10.2017