У меня есть корпоративное приложение, которое я хочу продолжать работать, чтобы оно могло вызывать веб-сервис и информировать пользователя, когда ему нужно что-то сделать.
Итак, теперь оно работает в фоновом режиме.делает вызовы, получает результаты, но информирование пользователя - моя проблема.
Когда я запускаю UILocalNotification
, предупреждение не вызывает мой UIAlertDelegate
, и я не вижу, как это установитьпредупреждение, чтобы сделать это.
Вот мой код того, как я делаю уведомление, и это на самом деле вызывает предупреждение, но мне нужно, чтобы затем вызвать View
, чтобы они могли видеть таблицу,но View
, который он открывает, не является одним из двух, которые использует мое приложение.
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif) {
localNotif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"%@ has a message for you.", nil), @"FYR"];
localNotif.alertAction = NSLocalizedString(@"Read Msg", nil);
localNotif.soundName = nil;
localNotif.applicationIconBadgeNumber = -1;
NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:@"Your Background Task works", ItemListKey, @"Message from FYR", MessageTitleKey, nil];
localNotif.userInfo = infoDict;
[[UIApplication sharedApplication] presentLocalNotificationNow:localNotif];
[localNotif release];
}
Кроме того, поэтому я попытался выдать предупреждение, что я могу установить делегата, поэтому в моем контроллере,где я вызываю приведенный выше код, я также называю это:
[[NSNotificationCenter defaultCenter]
postNotificationName:@"ShowAlert"
object:nil
userInfo:mydata];
Затем извлекается это уведомление, и в конечном итоге эта функция вызывается, и это работает, но предупреждение не отображается для пользователя,Я ожидаю, потому что это на заднем плане.
- (void) _showAlert:(NSString*)pushmessage withTitle:(NSString*)title {
NSLog(@"%@", @"Attemping to show alert");
UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:title
message:pushmessage
delegate:self
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes",nil];
[alertView show];
if (alertView) {
[alertView release];
}
}
В главном делегате у меня есть это определение и соответствующие функции:
@interface FYRViewAppDelegate : NSObject <UIApplicationDelegate, UIAlertViewDelegate> {
я думал, что если я смогу получить предупреждение, которое появляется навызовите этого делегата, тогда он сможет выполнить этот код:
- (void)alertView:(UIAlertView *)alertview clickedButtonAtIndex:(NSInteger)buttonIndex {
alertview--;
if (buttonIndex == 0) {
} else {
[self.window addSubview:[tableController view]];
}
}
Итак, есть ли способ заставить UILocalNotification
использовать мой делегат для оповещения?
Или есть лиспособ отображения оповещения, когда приложение находится в фоновом режиме?
Или мне нужно написать два приложения, чтобы они взаимодействовали с удаленными уведомлениями, поэтому, когда приложение находится в фоновом режиме, одно запускается, а затемзапускает основное приложение с удаленным уведомлением.Мне не нравится этот подход, так как он кажется очень грязным, но, вероятно, сработает.
Поскольку программа никогда не перестает работать,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
вызывается только при запускелокальное уведомление никогда не вызывает его, и это также никогда не вызывается:
- (void) application:(UIApplication*)application
didReceiveLocalNotification:(UILocalNotification *)localNotification {
.