在使用离子框架和ngCordova插件进行开发的同时,在Android上使用cordova会出现不良行为。 使用PushPlugin插件,Im能够使用GCM接收通知。 当应用程序在后台并收到通知时,我可以在不进入应用程序的情况下解雇它,但是当我启动应用程序时,我并不知道收到的新数据(&已被解雇) 有没有办法仍然有数据?我需要它,因为它不仅是一个通知,而且还需要稍后在UI上显示的数据。Cordova - 关闭通知会丢失它里面的数据
回答
这不可能不幸。如果用户点击通知,你可以执行一些代码。如果用户驳回它,你的应用永远不会知道。
我将如何构建该功能有一个数据库,该数据库包含用户需要查看的所有信息。当用户看到信息时(通过打开通知或其他方式),拨打服务器并将该内容标记为已读。
通过这种方式,您可以在应用启动时调用您的服务器以获取显示用户的内容列表。如果通知被点击,您可以直接将它们带到该数据,然后点击服务器并将其标记为“已查看”或其他任何内容。
希望有帮助,祝你好运!
这就是我想到的一种选择,但它让人感觉到“延迟”,因为用户知道数据已收到,现在当他打开应用程序时,他需要等待几秒钟,直到他再次获取数据。也许可以从android访问localStorage吗?我知道android编码(我实际上重写我的应用程序在离子为了同时具有两个平台 - android&ios),也许我可以在gcmIntentService中编写一些代码来访问我的webView的localStorage? – buddy123 2015-03-09 05:11:19
是的,你可以通过调用像访问本地存储:window.localStorag – justinschuldt 2015-03-09 13:54:01
我跑出来的时候编辑我最后的评论,所以这里是: : 是的,你可以通过调用像访问本地存储与var newData = window.localStorage.yourVariable; 'Angular'的方法是使用它们的包装器$ window,因为它具有内置的承诺。您需要在您的控制器或服务中包含$ window作为依赖项。它可能看起来像这样: 。('dataService',function($ q,$ window){ return newData = $ window.localStorage.yourVariable; }); – justinschuldt 2015-03-09 14:01:40
如果应用程序在后台,您可以通过修改插件缓存服务器的内容来实现此行为。这样,即使通知被解雇,您也会收到消息。阅读我的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);
}
}
- 1. 页面刷新弹出关闭并丢失页面数据
- 2. 关闭hadoop HDFS后数据丢失了?
- 3. 设备关闭时过期的本地通知丢失
- 4. 项目关闭后全局变量会丢失它的值
- 5. 连接关闭时可能会丢失数据
- 6. Akka流 - 关闭流与分组,而不会丢失数据
- 7. 关闭浏览器会话丢失
- 8. 页面间会话数据丢失
- 9. InterlockedPushListSList丢失。它在哪里?
- 10. 如果sqlite数据库没有关闭,可能会丢失数据吗?
- 11. 关闭仿真器后数据库丢失数据
- 12. codeigniter会话数据丢失
- 13. CodeIgniter会话丢失数据
- 14. php:会话数据丢失
- 15. Chrome会话数据丢失
- 16. CodeIgniter会话数据丢失
- 17. 丢失会话数据
- 18. PHP +会话数据丢失
- 19. 当浏览器关闭时,Silverlight绑定的TextBox会丢失数据
- 20. 网络丢失时通知
- 21. 关闭/关闭屏幕的Android通知
- 22. 关闭wifi后关闭Tizen可穿戴传感器数据丢失
- 23. 文本框里面的UpdatePanel丢失数据
- 24. 关闭里面的iframe
- 25. 关闭通知MonoTouch
- 26. 关闭Android通知
- 27. 关闭MediaStyle通知
- 28. NSUserNotificationCenter关闭通知
- 29. Android:关闭通知的通知操作
- 30. 如何使任何节点关闭时榛树会丢失数据?
在哪个平台你有这个问题?在iOS上它是如何工作的,但在android上,我认为即使它被解雇,你也应该能够获得推动力。 – jcesarmobile 2015-03-09 08:21:37
它很好的知道它是如何在IOS中工作的,我不知道。但在我的情况下我试图在Android中。我开始研究一个角度来挖掘java代码,并使用localStorage作为我的应用程序的接口,但也许因为它与ios相同,我应该采用不同的方式。 – buddy123 2015-03-09 08:45:58
在Android上,应用程序获取推送消息并显示它,因此您可以查看插件代码并进行一些更改以在推送数据接收时保留它。但是这将涉及以本地方式(如sqlite数据库)存储它们,然后使用另一个插件来获取通知,这将不是一件容易的事情 – jcesarmobile 2015-03-09 08:50:40