我正在使用离子cordova开发聊天应用程序。当用户收到新消息时,我正在使用PushNotification。问题是当用户收到新消息时。我的应用程序必须更新服务背景中的聊天列表。但是,离子科尔多瓦不能在后台服务。如何在后台更新聊天列表?我有一个想法,一旦用户onMessage()在PushNotification插件中收到通知,它就会创建一个自定义插件,它将调用另一个自定义插件。在自定义插件中,我使用urlconnection来调用php服务器以从服务器获取最新信息。接下来,自定义插件正在更新手机中的sqlite信息。以这种方式做这是一个好习惯吗?
答案 0 :(得分:1)
我建议您修改推送通知插件代码。每当您收到通知时,在 GCMIntentService.java 中都会检查应用是否在前台或后台。如果应用不在前台,请使用以下语法将通知有效内容数据保存在 SharedPreferences 中
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("pushdata", data);
// Commit the edits!
editor.commit();
每当用户打开应用时,请检查共享偏好设置,并使用以下插件获取存储的数据。
cordova plugin add cordova-plugin-shared-preferences --save
获取共享偏好的示例代码
document.addEventListener('deviceready', () => {
const prefs = window.plugins.SharedPreferences
prefs.getSharedPreferences('shared_preferences', 'MODE_PRIVATE', () => {
prefs.putString('pref_key', 'some text')
prefs.getString('pref_key', (value) => {
alert(value)
}, (error) => {
// handle error
})
}, (error) => {
// handle error
})
}
希望它对你有所帮助。