Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如果某个操作尚未执行,如何安排本地通知';没有被制造出来?_Iphone_Ios5_Notifications - Fatal编程技术网

Iphone 如果某个操作尚未执行,如何安排本地通知';没有被制造出来?

Iphone 如果某个操作尚未执行,如何安排本地通知';没有被制造出来?,iphone,ios5,notifications,Iphone,Ios5,Notifications,如果满足特定条件(用户没有输入每日数据),我想安排每天晚上7点发出本地通知 我该怎么做呢?在iOS中安排本地通知相当简单-苹果有一个很好的例子来说明如何做到这一点: 我假设“输入每日数据”的标准发生在你的应用程序中,对吗?如果是这样,那么您基本上只需将本地通知安排在每天晚上7点,然后如果用户输入了每日数据,您只需取消当天的通知。我发现本地通知的调度有点挑剔,所以我可能会取消所有本地通知,然后重新调度它们 请记住,应用程序仅限于一次只能有64个计划的本地通知。所以从理论上讲,你可以把64天的时间安

如果满足特定条件(用户没有输入每日数据),我想安排每天晚上7点发出本地通知


我该怎么做呢?

在iOS中安排本地通知相当简单-苹果有一个很好的例子来说明如何做到这一点:

我假设“输入每日数据”的标准发生在你的应用程序中,对吗?如果是这样,那么您基本上只需将本地通知安排在每天晚上7点,然后如果用户输入了每日数据,您只需取消当天的通知。我发现本地通知的调度有点挑剔,所以我可能会
取消所有本地通知
,然后重新调度它们


请记住,应用程序仅限于一次只能有64个计划的本地通知。所以从理论上讲,你可以把64天的时间安排到未来(因为你每天只有一个通知)。不过,我还是要谨慎,因为这可能会让用户非常恼火。我可能一次只做几天或一周,因为如果他们在几次提醒后不打开应用程序,他们可能会失去兴趣。

只需将其分为三种情况:

  • 现在是晚上7点之前,用户还没有输入他们的每日数据
  • 时间是晚上7点之前,用户已经输入了他们的每日数据
  • 晚上7点以后
  • 在案例1中,您设置了一个在今天晚上7点发出的通知,然后每天重复

    在案例2和案例3中,您设置了一个通知,在明天晚上7点发出,然后每天重复

    创建和计划通知的代码如下所示:

    UILocalNotification *dailyNotification = [[UILocalNotification alloc] init];
    dailyNotification.fireDate = nextReminderTime; // set this to 7pm today or tomorrow
    dailyNotification.timeZone = [NSTimeZone defaultTimeZone]; 
    dailyNotification.repeatInterval = NSDayCalendarUnit;
    dailyNotification.soundName = UILocalNotificationDefaultSoundName;
    dailyNotification.alertBody = @"You need to enter data for today.";
    
    当然,如果您为今天晚上7点设置了警报,那么用户将在晚上7点之前打开应用程序并输入数据,则需要取消今天的通知


    或者(这是我在类似情况下所做的),您可以使用
    [[UIApplication sharedApplication]cancelAllLocalNotifications]取消所有通知
    并在每次应用程序即将进入后台时根据应用程序状态从头开始重新设置它们(即,在
    UIApplication
    ApplicationIdentinterBackground:
    中。这更简单,因为您不必考虑以前设置了哪些通知。

    这是一个很好的警告。也许我应该让他们选择每日提醒或每周提醒。不过,请记住,您只能在你的应用程序已打开。因此,如果用户不继续打开你的应用程序,你最终将没有预定的通知,无法安排更多通知。我想这是苹果防止可能滥用的保护措施。