如何在UILocalNotification Alert Body中指定相对时间(即“以X分钟开始”)?

时间:2015-04-20 17:52:54

标签: ios objective-c uilocalnotification

我正在创建这样的本地通知:

NSDate *fireDate = // start date from model
NSString *startingInMinutes = @"5 minutes"; // also actually from model    
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = [NSString stringWithFormat:@"Your event is starting in %@", startingInMinutes];
notification.fireDate = fireData;
notification.timeZone = [NSTimeZone defaultTimeZone];
[[UIApplication sharedApplication] scheduleLocalNotification:notification];

然后,向用户显示通知后," 5分钟"字符串很快就过时了。

例如,如果用户未与通知进行30分钟的互动,则仍会显示"您的活动在5分钟内开始。"这显然是因为" 5分钟"是一个硬编码的字符串。

是否有任何语法在UILocalNotification的警报正文中指定相对时间(即"在X分钟内")?

2 个答案:

答案 0 :(得分:0)

你无能为力。
这是一个静态文本。

请参阅documentation

答案 1 :(得分:0)

这是不可能的,因为通知的有效负载是在计划(UILocationNotification)或传递给APNS(删除通知)时设置的。

您有两种选择:

  1. 保留您的信息,并希望用户意识到信息的内容反映了一个冻结的时间点,并且可以使用通知的时间戳进行心理上的数学计算。

  2. 将文字调整为略微模糊("您的活动即将开始")或参考绝对时间("您的活动从下午4:00开始")。


  3. WatchKit包含WKInterfaceTimer,这是一个由操作系统控制的计数器标签。它的创建是为了减少Apple Watch和iPhone之间所需的通信量,以便随着时间的变化更新UI。如果此功能对您在通知上下文中很重要,我建议您提交一份错误报告,要求在https://bugreport.apple.com进行增强。