如何将本地通知重复间隔设置为自定义时间间隔?
我正在制作一个 iPhone 应用程序,它需要本地通知。
在本地通知中有 repeatInterval 属性,我们可以在其中设置分钟、小时、天、周、年等单位重复间隔。
我希望重复间隔应该为 4 小时。
因此,每4 小时就会收到一次本地通知。
我不希望用户为每个设置单独的通知。
我希望用户能够将重复间隔设置为 4 小时。
我该怎么做?
I am making an iPhone app, which has a requirement of Local Notifications.
In local notifications there is repeatInterval property where we can put the unit repeat intervals for mintute, hour, day,week,year, etc.
I want that repeat interval should be 4 hours.
So every 4 hours the local notification comes.
I dont want the user to set seperate notifications for each.
I want the user to be able to set repeatInterval as 4 hours.
How do I do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
得到了答案,这是直接的。
您无法创建自定义重复间隔。
您必须使用 NSCalendarUnit 的内置单位时间间隔。
我尝试了上述所有解决方案,甚至尝试了其他方法,但都不起作用。
我投入了大量的时间来发现我们无法让它在自定义时间间隔内工作。
Got the answer, it is as straight as it gets.
You cannot create custom repeat intervals.
You have to use on NSCalendarUnit's in-built Unit Time Intervals.
I tried all the above solutions and even tried other stuffs, but neither of them worked.
I have invested ample time in finding out that there is no way we can get it to work for custom time intervals.
重复间隔只是一个具有位图常量的枚举,因此无法自定义
repeatIntervals
,只能是每分钟、每秒、每周等话虽如此,您的用户没有理由必须设置每一项。如果您让他们在用户界面中设置两个值,例如“
频率单位:年/月/周/小时
”和“每____年/月/周/小时”然后您可以通过设置适当的触发日期自动生成适当的通知,而无需重复。
The repeat interval is just an enum that has a bit-map constant, so there is no way to have custom
repeatIntervals
, just every minute, every second, every week, etc.That being said, there is no reason your user should have to set each one. If you let them set two values in your user interface, something like "
Frequency unit: Yearly/Monthly/Weekly/Hourly
" and "Every ____ years/months/weeks/hours
" then you can automatically generate the appropriate notifications by setting the appropriate fire date without a repeat.我有一个想法如何做到这一点,我已经在我的项目中实现了这一点
。首先,创建带有触发日期的本地通知(例如,每分钟)。
下一步 - 使用此通知的唯一 ID 填充用户信息(如果您想将来删除它)和您的自定义周期,如下所示:
之后,实施
-(void)application:(UIApplication *)application didReceiveLocalNotification:( AppDelegate 中的 UILocalNotification *)notification
:只需再次将其添加到隐藏的通知中即可!
如果您想删除此通知,请执行
非常重要!
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
不要调用,当您在背景。因此,您必须设置长时间运行的后台任务,您将在其中再次创建通知。I have one idea how to do this, i've implemented this in my project
First, create local notification with fire date (for example, every minute).
Next step - fill user info with unique id for this notification (if you want to remove it in future) and your custom period like this:
After that, implement
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
in your AppDelegate:Just add it into the sheluded notificatiots again!
if you want to remove this notification, do
Very important!
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
do not called, when you at background. So, you must setup long-running background task, where you will create notification again.我已经使用了这段代码,并且它可以很好地重复 LocalNotification 我已经使用 LavaSlider 代码来实现此代码
i have used this code and it is working fine for repeat LocalNotification i have used LavaSlider Code for this code implemetation
如果您为每次想要触发通知的时间设置单独的通知,则可以设置所需的任何时间间隔。然后,您必须管理它们,如果您当前不是允许在后台运行的应用程序,则必须通过让用户运行您的应用程序来刷新它们。完成此任务后,我可以告诉您这是一个主要的 PITA。
You can set any time interval you want, if you set up separate notifications for each time you want a notification to fire. You then have to manage them, and if you are not an app that is at present allowed to run in the background, you'll have to refresh them by having the user run your app to do so. Having accomplished this, I can tell you it is a major PITA.
notif.repeatInterval = NSDayCalendarUnit;
notif.repeatInterval = NSDayCalendarUnit;