如何一次在本地通知中将日期数组设置为fireDate
Posted
技术标签:
【中文标题】如何一次在本地通知中将日期数组设置为fireDate【英文标题】:how to set array of date to fireDate in local notification at a time 【发布时间】:2017-03-07 11:31:22 【问题描述】:实际上,在我的应用中,我在不同时间启动了两个以上的计时器。在某些时间间隔后,我希望触发通知。当应用程序在前台但不在后台时,它工作正常。我该如何解决这个问题?
请帮忙。谢谢!
【问题讨论】:
在此处添加您的代码 【参考方案1】:您需要执行以下操作...
您需要开启后台模式。
在 AppDelegate 中,添加此代码以在后台运行应用程序
创建属性
@property (nonatomic, assign) UIBackgroundTaskIdentifier backgroundTask;
然后执行以下操作...
- (void)applicationDidEnterBackground:(UIApplication *)application
self.backgroundTask = [application beginBackgroundTaskWithExpirationHandler:^
DLOG(@"End of tolerate time. Application should be suspended now if we do not ask more 'tolerance'");
];
if (self.backgroundTask == UIBackgroundTaskInvalid)
DLOG(@"This application does not support background mode");
else
//if application supports background mode, we'll see this log.
DLOG(@"Application will continue to run in background");
希望对你有帮助。
【讨论】:
欢迎@Goneshkr :) 如何在 ios 10 中延长后台执行时间。现在只需 3 分钟。使用“beginBackgroundTaskWithExpirationHandler”【参考方案2】:你可以把两个定时器都处理成这个appdelgate方法
- (void)applicationDidEnterBackground:(UIApplication *)application
当应用程序进入后台时调用此方法并且您的代码仍执行此方法,希望这对您有所帮助。
注意:首先在项目目标中启用后台模式 -> 可用性选项卡 -> 后台模式 -> 开启
【讨论】:
我可以在 applicationDidEnterBackground 中调用计时器方法吗? 是的,您可以调用计时器方法,但是如果您可以在其他视图控制器中创建方法,则必须将代码更改为 appdelegate 并在 appdelegate 上创建方法并使用 appdelegate 实例调用其他类的方法。 实际上我在 homeViewController 中创建了计时器方法。我在 appDelegate 中调用该方法,就像使用 homeVC 参考 var 'func applicationDidEnterBackground(_ application: UIApplication) homeVC.updateTime() ' 它不起作用 @Goneshkr 在 Appdelegate 中创建方法,如果需要,然后在 Homeviewcontroller 中调用方法 例如。 “updateTime”方法在 Appdelegate 上创建和实现,并使用 Appdelegate 实例调用 applicationDidEnterBackground 和 homeviewcontroller。所以这是预期的工作。以上是关于如何一次在本地通知中将日期数组设置为fireDate的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Azure Notification Hub 中将 iOS 设备注册的到期日期设置为 31-12-9999 23:59:59?