我有一个iOS应用程序,在PageViewController中向用户显示一组不同的新闻源。每次应用程序启动时,它都会从后端请求每个Feed的新闻数据。如果它工作正常,通过NSNotificationCenter发送每个新闻源的通知,以便显示数据。 如果出现错误,也会发送每个Feed的通知,触发弹出消息,告知用户出现了问题。但如果发生这种情况,将为每个新闻Feed显示一个弹出窗口,最多可添加新闻源。
我的问题是,如何将所有这些错误案例通知合并到一个单独的错误案例通知中,从而避免出现许多无用且无法使用的弹出式窗口?
答案 0 :(得分:1)
if (self.isShowingErrorDialog) {
return; // Or possibly cache to show after current one is dismissed.
} else {
[[UIAlertView ...] show];
self.showingErrorDialog = YES;
}
答案 1 :(得分:1)
使用NSNotificationCentre发送通知时,您可以包含用户信息。这基本上是一个带有附加信息的NSDictionary。
为什么不包含失败请求的时间戳。您可以通过一些模糊性来测试这一点,看看您是否已经为这批请求发出警报。
- (void) notificationListener: (NSNotification*) notification {
static NSDate* lastAlerted = nil;
NSDate* sentDate = notification.userInfo[@"RequestDate"];
if ( lastAlerted != nil && [lastAlerted timeIntervalSince:sentDate] > FUZZY_INTERVAL) {
// post alert
// And update last Alerted
lastAlerted = sentDate;
}
}
您需要的方法是postNotificationWithName:Object:UserInfo:。
戈登
我认为你不能。
要确认,您发送的通知是Apple远程通知,警报是消息中心弹出的系统警报。
警报在您获得控制权之前发生,因为用户必须有机会忽略它们,否则人们会将此作为欺骗手段让应用程序在后台运行并杀死用户的电池。
您所能做的只是在请求中发送批处理令牌,并检查后端。