Push notification 收到推送通知后打开窗口时出现钛appcelerator错误

Push notification 收到推送通知后打开窗口时出现钛appcelerator错误,push-notification,titanium,appcelerator,appcelerator-titanium,pushwoosh,Push Notification,Titanium,Appcelerator,Appcelerator Titanium,Pushwoosh,我使用Tianium appcelerator作为一个小应用程序,pushwoosh作为通知服务器 在我的index.xml上,我有以下内容: 您只需要对代码进行一点更改: pushwoosh.onPushOpened(function(e) { var message = e.message; var login = Alloy.createController('login').getView(); OS_IOS ? $.nav.openWindow(login)

我使用Tianium appcelerator作为一个小应用程序,pushwoosh作为通知服务器

在我的index.xml上,我有以下内容:


您只需要对代码进行一点更改:

pushwoosh.onPushOpened(function(e) {
    var message = e.message;

    var login = Alloy.createController('login').getView();
    OS_IOS ? $.nav.openWindow(login) : login.open();
});
对于iOS,您需要使用导航窗口的openWindow()方法,对于Android,它是简单的open()调用

注意:

因为您提到要将用户导航到应用程序的不同部分,所以在打开另一个窗口之前,您需要注意导航窗口是否存在

这就是为什么会出现空错误的原因,因为当您收到通知并点击它时,它会打开应用程序并运行此pushwoosh.onPushOpened方法,直到此时您还没有创建任何导航窗口。因此,您需要一个不同的流程来导航到不同的部分

  • 点击通知后,如果你的应用程序在后台模式下运行,那么我相信你不会出现此错误,因为你已经创建了一个导航窗口

  • 但是如果您的应用程序处于终止状态,并且您收到并点击通知,那么您将收到此错误,因为您的应用程序尚未创建导航窗口(这就是为什么您会在控制台上看到不同的上下文)

因此,要想做你想做的事情,你需要创建一个不同的流程来处理在收到推送消息时打开应用程序登录窗口的场景。(简单地说,您仍然需要创建导航窗口,并在其中打开登录窗口或其他方法)


我希望您现在已经清楚是什么导致您的应用程序显示该错误。

您好,谢谢,但它不起作用,我创建了一个新的登录页面,但控制器中没有任何内容,但我得到了相同的错误:脚本错误{[error]:column=1112;[error]:line=1;[error]:message=“null不是对象(评估'i.u views.login.add')”;您好,谢谢,但它不起作用,我创建了一个新的登录页面,但控制器中没有任何内容,但我收到了相同的错误,但当我将此放置在Pushwoosh事件之外时,它正在起作用。我在回答中添加了一些注释,希望它能帮助您!您好,再次感谢您的回复,当收到push my app已打开时(不在后台或终止)重点是,当您点击通知时,NavigationWindow应该存在,因为您使用的是$.nav。那么您确定在收到推送消息之前已打开NavigationWindow吗?注意:如果我放置Alloy.createController('login').getView().open()在Pushwoosh事件之外