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