我有一个Android应用程序及其通知服务,无论应用程序如何。两者都很完美。通过用户定义的时间段,服务访问服务器以检查新数据。如果有新帖子,该服务通过Pending Intent通知通知用户,用户可以通过该通知打开并阅读新消息。未读取的通知不会累积并相互覆盖,即用户将始终看到已发布的最新新闻。
所有这一切都运行正常,但是用户说警报是重复的 - 如果没有新消息,则会被告知已阅读的新闻。我在SharedPreferences中保留最后读取的新闻ID。
if (post.id != PreferenceManager.getDefaultSharedPreferences(service).getLong(
service.getString(R.string.notifications_last_id), 0)) {
Intent intent = new Intent(service, PostActivity.class);
intent.putExtra(service.getString(R.string.pref_item_id), post.id);
intent.putExtra(service.getString(R.string.notifications_referrer), true);
service.sendNotification(post.rubric.title, post.title, R.id.notifications_news_id, PostActivity.class, intent);
Preferences.setNotificationNewsId(service, post.id);
Log.d(TAG, service.getString(R.string.notifications_last_id) + ":" + post.id);
}
public static void setNotificationNewsId(Context context, long id) {
try {
final SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
sp.edit().putLong(context.getString(R.string.notifications_last_id), id).commit();
} catch (Exception e) {
e.printStackTrace();
}
}
可能是重复通知的原因是什么?或者是否有另一种方法来存储应用程序和服务可用的最后一个标识符?