Nativescript - Push-уведомления Onesignal, проблема с навигацией Android - PullRequest
0 голосов
/ 11 марта 2019

Мне трудно понять, чего мне здесь не хватает, когда пользователь получает push-уведомление, а затем нажимает кнопку, чтобы увидеть его и перейти на нужную страницу в приложении, поэтому мой код икак это работает очень хорошо в IOS:

Так что, если приложение Android, я использую этот код ниже ... Я получаю содержимое и передаю его в функцию с именем handleOpenURL

if (application.android) {
    application.on(application.launchEvent, (args) => {
        try {
            TnsOneSignal.startInit(application.android.context).setNotificationOpenedHandler(new TnsOneSignal.NotificationOpenedHandler({
                // notificationOpened: function (result: com.onesignal.OSNotificationOpenResult) {
                notificationOpened: function (result) {
                    const imovelAndroid =  JSON.parse(result.stringify()).notification.payload.additionalData;
                    handleOpenURL(imovelAndroid);
                }
            })).init();
            TnsOneSignal.setInFocusDisplaying(TnsOneSignal.OSInFocusDisplayOption.Notification);
            TnsOneSignal.startInit(application.android.context).init();
        }
        catch (error) {
            console.error('error', error);
        }
    });
}

Я на самом деле ввожу функцию ниже, но проблема в том, что при навигации она просто не работает:

function handleOpenURL(argImovel) {

    const precoToNumber = +argImovel['imovel'].preco;
    const precoFormated = Number(precoToNumber).toLocaleString("pt-PT", { minimumFractionDigits: 0 });

      const navigationOptions = {
        moduleName: "detail/detail-page",
        context:{ //my context here which is big so i´m not putting it.
            }
      };
      frameModule.topmost().navigate(navigationOptions);
}

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

Чего мне не хватает?спасибо за ваше время, с уважением.

РЕДАКТИРОВАТЬ

Благодаря Manoj, я исправил проблему, добавив это в мою функцию handleOpenURL:

setTimeout(() => {
        frameModule.topmost().navigate(navigationOptions);
    }, 2);

1 Ответ

1 голос
/ 12 марта 2019

Убедитесь, что ваш фрейм готов к навигации, попробуйте зарегистрировать frameModule.topmost() и посмотрите, является ли этот фрейм действительным.

Может быть, вы могли бы попробовать тайм-аут на 1 или 2 секунды и посмотреть, решит ли это проблему.

...