Nativescript-Onesignal推送通知,Android导航问题

时间:2019-03-11 19:03:02

标签: nativescript onesignal

当用户收到推送通知然后点击按钮以查看并导航到应用程序内的正确页面时,我很难理解我在这里缺少什么。所以我的代码是在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 个答案:

答案 0 :(得分:1)

确保您的框架已准备好导航,请尝试记录frameModule.topmost()并查看该框架是否有效。

也许您可以尝试1或2秒的超时时间,看看是否可以解决该问题。