我正在创建这样的本地通知:
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分钟内")?
答案 0 :(得分:0)
你无能为力。
这是一个静态文本。
答案 1 :(得分:0)
这是不可能的,因为通知的有效负载是在计划(UILocationNotification
)或传递给APNS(删除通知)时设置的。
您有两种选择:
保留您的信息,并希望用户意识到信息的内容反映了一个冻结的时间点,并且可以使用通知的时间戳进行心理上的数学计算。
将文字调整为略微模糊("您的活动即将开始")或参考绝对时间("您的活动从下午4:00开始")。
WatchKit包含WKInterfaceTimer
,这是一个由操作系统控制的计数器标签。它的创建是为了减少Apple Watch和iPhone之间所需的通信量,以便随着时间的变化更新UI。如果此功能对您在通知上下文中很重要,我建议您提交一份错误报告,要求在https://bugreport.apple.com进行增强。