【发布时间】:2011-07-08 14:03:02
【问题描述】:
我有一个想要继续运行的企业应用程序,因此它可以调用 Web 服务并在用户需要执行某些操作时通知用户。
所以,它现在在后台运行,它发出调用,得到结果,但通知用户是我的问题。
当我触发 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 {。
【问题讨论】:
标签: ios4 background uialertview uilocalnotification