如何一次在本地通知中将日期数组设置为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?

如何设置在第一次设置通知后每秒钟触发一次的本地通知?

如何在javascript中将日期时间从用户时区转换为EST [重复]

在一天中的特定时间安排本地通知