2014-04-28 32 views
2

我正在使用重複本地通知來向用戶顯示警報。爲此,我使用下面的代碼本地通知不起作用當輸入applicationDidBecomeActive

UILocalNotification* localNotification = [[UILocalNotification alloc] init]; 
localNotification.fireDate = [[NSDate date] dateByAddingTimeInterval:60]; 
localNotification.alertBody = @"sss"; 
localNotification.alertAction = @"Show me the item"; 
localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1; 
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

使用NSNotification中心我會每60秒調用本地通知。它工作正常。

而且在我的appDelegate使用下面的代碼: -

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
    { 
     NSLog(@"Received"); 
     UIApplicationState state = [application applicationState]; 
     if (state == UIApplicationStateActive) { 

      [[NSNotificationCenter defaultCenter] postNotificationName:@"RestartProcess" object:self]; 

} 
application.applicationIconBadgeNumber = 0; 
} 

而且

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    UILocalNotification *locationNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; 
    if (locationNotification) { 
     // Set icon badge number to zero 
     NSLog(@"Yes Notid=fications is predsent"); 
     application.applicationIconBadgeNumber = 0; 
    } 

    return YES; 
} 

我的問題是本地通知開始時,我按home鍵然後等着顯示。時間段後顯示通知消息。 當我點擊應用程序圖標的過程停止。之後,本地通知不working.But當我被點擊通知消息它會正常工作。如何我可以解決這個問題。任何人都可以幫助我做到這一點。在此先感謝..

回答

1

didreceiveLocalNotification僅在您點擊通知消息時調用。如果你想在applicationDidBecomeActive中做到這一點,你必須手動完成。

您可以檢查證件號碼數(如果通知包括徽章),如:

-(void) applicationDidBecomeActive:(UIApplication *)application 
{ 

    if(application.applicationIconBadgeNumber >= 1) 
    { 
     //Do you stuff here 
     application.applicationIconBadgeNumber = 0; 

    } 
} 
+0

Now works Thanks @Rudeboy – PSP

1

當您按下home鍵:

UIApplicationState state = [application applicationState]; 
// at this time, state == UIApplicationStateInactive 

當您單擊您的應用程序,我想你應該實施此方法:

- (void)applicationDidBecomeActive:(UIApplication *)application- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
UIApplicationState state = [application applicationState]; 
application.applicationIconBadgeNumber = 0; 
//state at this time is UIApplicationStateInactive 
if (state == UIApplicationStateInactive) { 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"RestartProcess" object:self]; 
} 
} 

希望這能幫到你