• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - iOS:本地通知不会按时触发

[复制链接]
菜鸟教程小白 发表于 2022-12-12 19:02:36 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

问题是我的通知在设置时没有通过。我在 Nib 里放了一个日期选择器,在它下面放了一个按钮。用户应该在选择器中设置日期,然后单击按钮将通知设置为在日期前 60 小时触发。所以,看起来我只是在让被解雇者识别日期选择器中的日期方面遇到问题。这是代码,它在我的 View Controller 中:

- (IBAction)scheduleNotifButtonid)sender {
UILocalNotification *localNotif = [[UILocalNotification alloc] init];

NSDate *selectedDate = [self.datePicker date];


localNotif.fireDate = [selectedDate  dateByAddingTimeInterval:-60*60*60];
localNotif.timeZone = [NSTimeZone defaultTimeZone];


localNotif.alertBody = @"Event is in three days!";

localNotif.alertAction = nil;

localNotif.soundName = UILocalNotificationDefaultSoundName;
localNotif.applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];    

UIAlertView *alert = [[UIAlertView alloc] initWithTitle"Event scheduled."
                                                message"You will be notified three days before the event."
                                               delegate:nil
                                      cancelButtonTitle"Okay."
                                      otherButtonTitles:nil];
[alert show];

}

如果有帮助,这里还有一些额外的代码,这是来 self 的 View Controller 的更多代码,用于在用户输入的选择器中保存日期:

- (IBAction)dateChangedid)sender
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    NSDate *selectedDate = [self.datePicker date];

    [defaults setObject:selectedDate forKey"ImportantDatesViewController.selectedDate"];
    [defaults synchronize];

}
- (void)viewDidLoad {
    NSDate *storedDate = [[NSUserDefaults standardUserDefaults] 
                          objectForKey"ImportantDatesViewController.selectedDate"];
    if (storedDate == nil) {
        storedDate = [NSDate date];
    }

    [self.datePicker setDate:storedDate animated:NO];

}

我已经研究此代码 3 天了,但无法弄清楚为什么我的通知没有按预期通过。非常感谢任何帮助,谢谢!



Best Answer-推荐答案


你明白 UILocalNotifications 和远程通知是不同的东西吗?

在 didRegisterForRemoteNotificationsWithDeviceToken 中,您可以获得用于远程通知的设备 token 。远程通知是从服务器发送的,因此您必须将该 token 保存在您的服务器上,然后使用您的服务器发送任何远程通知。

你为什么不改变这个:

localNotif.fireDate = [eventDate dateByAddingTimeInterval:-630*60];

到这里:

localNotif.fireDate = [[NSDate date] dateByAddingTimeInterval:60];

然后本地通知应该会在一分钟内消失。可能问题出在您设置的日期上。

关于iphone - iOS:本地通知不会按时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964541/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap