我正在使用UILocalNotification
,我想通知我的控制器之一,即使應用程序已終止,也已收到通知。在應用程序終止後使用NSNotification處理UIViewController中的UILocalNotification
在我的appDelegate我實現了這個功能:
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
if ([application applicationState] == UIApplicationStateInactive) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"localNotificationReceived" object:notification.userInfo];
}
}
在我UIViewController
我實現了觀察者的viewDidLoad
方法
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didlocalNotificationReceived:) name:@"localNotificationReceived" object:nil];
}
它完美的應用程序運行時在後臺。由於viewDidLoad
方法已被調用,觀察者正在等待..
問題是當我殺了應用程序。然後,我的控制器的觀察者不見了,並且永遠不會調用方法didlocalNotificationReceived
。
我認爲這是因爲當我收到localNotification
並再次運行應用程序。在我的UIViewController
的viewDidLoad
之前調用didReceiveLocalNotification:
方法。然後在PostNotificationName
之後創建觀察者,然後觀察者不收到任何東西。
我想知道是否有一些最佳實踐或模式來處理這類問題。
我知道didFinishLaunchingWithOptions
方法是在didlocalNotificationReceived
之前調用的,所以這裏可能有些事情要做。
更新:
我還發現應用何時終止。一旦你點擊通知,它會打開應用程序,調用功能didFinishLaunchingWithOptions
,但從來沒有打電話didReceiveLocalNotification
。所以我認爲我會以不同的方式處理這兩種情況。
嘗試在didDinishLaunching中強制加載視圖(通過訪問視圖屬性)。看看是否有幫助。 –