Cordova - 解除通知将丢失其中的数据

时间:2015-03-08 20:40:55

标签: cordova cordova-plugins ionic phonegap-pushplugin

我在android上使用cordova时遇到了不良行为,同时使用离子框架和ngCordova插件进行开发。 使用PushPlugin插件,Im能够使用GCM接收通知。 当应用程序处于后台并收到通知时,我可以在不进入应用程序的情况下解除它,但是,当我启动应用程序时,我不知道收到的新数据(并且已被解雇) 还有办法还有数据吗?我需要它,因为它不仅是一个通知,而且还需要稍后在UI上显示的数据。

2 个答案:

答案 0 :(得分:1)

不幸的是,这是不可能的。如果用户单击通知,您可以执行一些代码。如果用户将其解雇,您的应用将永远不会知道。

我如何构建该功能的是一个包含用户需要查看的所有信息的数据库。当用户看到信息时(通过打开通知或其他方式),请拨打服务器并将该内容标记为已读。

这样,您可以在应用启动时调用您的服务器,以获取显示用户的内容列表。如果单击通知,您可以直接将其发送到该数据,然后点击服务器并将其标记为“已查看”或其他任何内容。

希望有所帮助,祝你好运!

答案 1 :(得分:0)

如果应用程序在后台,则可以通过修改插件来缓存服务器中的内容来实现此行为。这样,即使通知被解除,您也会收到消息。在修改插件时阅读我的​​answer

  

通过添加PushPlugin.sendExtras(extras)来修改此function,无论应用是在前台还是在后台,都会发送数据。

protected void onMessage(Context context, Intent intent) {
    Log.d(TAG, "onMessage - context: " + context);
    Bundle extras = intent.getExtras();
    if (extras != null)
    {
        if (PushPlugin.isInForeground()) {
            extras.putBoolean("foreground", true);
        }
        else {
            extras.putBoolean("foreground", false);
            if (extras.getString("message") != null && extras.getString("message").length() != 0) {
                createNotification(context, extras);
            }
        }
        // call sendExtras always
        PushPlugin.sendExtras(extras);
    }
}