是否有类似iOS'的等效解决方案;Android平台上的localNotification?
我的应用程序需要在未来的特定时间(可能几个月后)向用户显示通知。在iOS中,我需要做的就是:是否有类似iOS'的等效解决方案;Android平台上的localNotification?,android,ios,notifications,alarmmanager,uilocalnotification,Android,Ios,Notifications,Alarmmanager,Uilocalnotification,我的应用程序需要在未来的特定时间(可能几个月后)向用户显示通知。在iOS中,我需要做的就是: UILocalNotification* localNotification = [[UILocalNotificationalloc] init]; localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:60]; localNotification.alertBody = @"Your alert message"; lo
UILocalNotification* localNotification = [[UILocalNotificationalloc] init];
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:60];
localNotification.alertBody = @"Your alert message";
localNotification.timeZone = [NSTimeZone defaultTimeZone];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
然而,在Android中,它比我最初预期的要复杂得多:
BroadcastReceiver
中所说的那样再次启动
通知将在将来的计划时间(例如
一个月后),而不是在我设置通知时(现在)。当时,
通知所需的数据可能不再可用。我不
除了存储相关数据外,请查看其他解决方法,然后等待
让警报响起
这是正确的,您需要存储要在通知中显示的数据,SharedReferences
可能是最简单的方法
编辑:
您不需要保留对挂起的意图的引用,您所要做的就是以与示例相同的方式创建意图
当您第一次创建报警时,您使用了此意图
Intent intent = new Intent(context,MyClass.class);
//any flags or extras
PendingIntent.getBroadcast(context, 0, intent, 0);
现在您想取消该报警,所以只需再次创建相同的意图,它必须是原始区域的1对1
Intent intent = new Intent(context,MyClass.class);
//any flags or extras that you previously had
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmMgr.cancel(pi);
我不认为还有其他方法,但请参考此帮助将数据写入文件的哪一部分构成“痛苦”?与iOS代码片段相比,您是否同意安卓方式是痛苦的?哇,作为一名即将来到安卓的iOS开发人员,这对我来说是惊人的。每次设备启动时,我都必须重新注册所有警报…这太疯狂了。回答您的问题:我可以使用a服务在启动时安装所有警报,但在新事件准备就绪(无需重新启动)时调用同一服务,在这种情况下,旧事件安装了两次。没有像getCurrentAlarms()这样的方法吗?用户可能需要取消以前设置的一个报警,他怎么做?不,没有办法获得所有待处理的意图,您是否查看了如何取消报警?如果你所有的报警创建都是在一个点上完成的,只需使用你创建报警的相同意图来取消那里的任何报警,我知道取消(PendingEvent操作)API。但警报设置后可能需要取消一段时间(决定在计划后一周内不旅行),我不能保留挂起的帐篷的参考资料,可以吗?我没有仔细阅读文档。API使用filterEquals(意图其他)进行比较,而不是引用。谢谢