2

在使用 ionic 框架和 ngCordova 插件进行开发时,我在 android 上使用 cordova 时遇到了不好的行为。使用 PushPlugin 插件,我能够使用 GCM 接收通知。当应用程序处于后台并收到通知时,我可以在不进入应用程序的情况下将其关闭,但是,当我启动应用程序时,我不知道收到(和关闭)的新数据是否有办法保留数据? 我需要它,因为它不仅是一个通知,还有我稍后需要在 UI 上显示的数据。

4

2 回答 2

1

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

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

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

希望有帮助,祝你好运!

于 2015-03-08T21:57:27.307 回答
0

如果应用程序在后台,您可以通过修改插件以缓存来自服务器的内容来实现此行为。这样,即使通知被驳回,您也会收到消息。阅读我关于修改插件的答案。

修改此函数,添加PushPlugin.sendExtras(extras)无论应用程序是在前台还是后台都将发送数据。

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);
    }
}
于 2015-04-16T16:24:22.250 回答