我的应用需要在未来某个特定的时间向用户显示通知(可能是数月之后)。在iOS中,我所需做的就是这样:
UILocalNotification* localNotification = [[UILocalNotificationalloc] init];
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:60];
localNotification.alertBody = @"Your alert message";
localNotification.timeZone = [NSTimeZone defaultTimeZone];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
然而,在Android中,它比我最初预期的要复杂得多:
1. 我必须使用Alarm Manager安装闹钟,以便在未来的每个指定时间启动服务。 2. 这些服务又会创建通知,并使用Notification Manager将通知推送到状态栏等。
但这种解决方案存在问题:
1. 如果设备在闹钟响起之前重启,则闹钟将丢失。我可以像这样注册开机广播并重新安装服务。然而,我真的想避免为同一事件安装重复的闹钟,但似乎没有办法从Alarm Manager获取当前已安装的闹钟? 2. 通知是在将来的预定时间(比如一个月后)组成的,而不是在我设置通知时(现在)。此时,通知所需数据可能已不再可用。除了存储相关数据并等待闹钟响起外,我看不到任何其他解决方案。
是否有无痛的解决方案来解决Android本地通知问题?