我有一个Worklight应用程序,它接收来自服务器的推送通知 . 通知表示当前用户有来自其他用户的新消息 . 用户可以通过访问应用程序中的消息页面然后前进到特定的对话页面来阅读它们 .
我想区分用户意图之间的代码 . 该应用程序将:
-
如果用户正常启动应用程序(而不是通过点击新通知),请向用户显示常规应用程序主屏幕 .
-
如果用户通过点击通知启动/恢复应用程序,请向用户显示消息页面 .
-
如果在应用程序位于前台时收到,则仅更新屏幕上的消息计数(无论哪个页面处于活动状态) .
问题是:是否有可靠的方法来区分上述条件?
在另一个帖子中,我看到了一个建议,要记住恢复事件的时间戳和onReadyToSubscribe事件,并假设我们在通知到达时睡着了/不活动,例如在此之后一秒钟 . 这将使我能够区分2和3 .
但是,1不在此范围内 . 即如果有新消息,但用户正常启动应用程序,应用程序将无法知道这一点,并认为它是通过点击通知启动的 . 这样,用户打算查看app主屏幕,但我们将他转移到消息页面 .
iOS和Android都有可靠的解决方法吗?
Worklight vesion 6.2.0.00-20140922-2259 .
1 回答
在纯Native应用程序中,您可以知道“用户打开应用程序的位置”,这意味着是通过点击收到的通知还是通过点击应用程序图标 .
在基于Worklight的混合应用程序 and if using only the JavaScript API 中,这是不可行的,因为所有路径都到达同一目的地
pushNotificationReceived
函数 . 因此,无论您是点击通知还是应用程序图标或将应用程序带到前台,都会调用上述功能 .解决方案可能是将您的实现基于以下知识中心文档主题:Using native and JavaScript push APIs in the same app .
这样,使用本机代码和JS代码的组合,您可以处理收到通知但用户决定点击应用程序图标而不是通知的方案 .
一个端到端的例子有点参与实现,但是如果你按照文档主题中的代码示例,你应该到达那里......