Nativescript - Onesignal 推送通知,Android 导航问题
Nativescript - Onesignal Push notifications, Android navigation issue
当用户收到推送通知然后点击按钮以查看它并导航到应用程序内的正确页面时,我很难理解我在这里遗漏了什么,所以我的代码是这样的顺便说一下,它在 ios:
中运行良好
因此,如果应用程序是 android,我将使用下面的代码...我接收内容并将其传递给名为 handleOpenURL[=14= 的函数]
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);
确保您的框架已准备好进行导航,尝试记录 frameModule.topmost()
并查看该框架是否有效。
也许您可以尝试 1 或 2 秒的超时,看看是否能解决问题。
当用户收到推送通知然后点击按钮以查看它并导航到应用程序内的正确页面时,我很难理解我在这里遗漏了什么,所以我的代码是这样的顺便说一下,它在 ios:
中运行良好因此,如果应用程序是 android,我将使用下面的代码...我接收内容并将其传递给名为 handleOpenURL[=14= 的函数]
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);
确保您的框架已准备好进行导航,尝试记录 frameModule.topmost()
并查看该框架是否有效。
也许您可以尝试 1 或 2 秒的超时,看看是否能解决问题。