2015-09-07 46 views
1

enter image description here我不知道這裏有什麼問題,但是每次運行我的應用程序時,本地通知都會調用重複顯示的fireDate作爲NULL.I正試圖從過去5小時了。我需要幫助!UILocalNotification在應用程序啓動時被重複調用

"<UIConcreteLocalNotification: 0x7f872ead7630>{fire date = (null), time zone = (null), repeat interval = NSCalendarUnitDay, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = Monday, 7 September 2015 5:32:44 pm India Standard Time, user info = (null)}", 

我已經做了足夠的UILocalNotification的研究開始使用它,但我仍然面臨着這個問題。

-(void)setDate:(NSDate*)myfireDate andTime1InString:  (NSString*)time1Str andTime2InString:(NSString*)time2Str andTime3InString:(NSString*)time3Str{ 

    //concatenate myFireDate with all three times one by one 
NSString *myFireDateInString = [dateFormatter stringFromDate:myfireDate]; 
myFireDateInString = [myFireDateInString stringByAppendingString:@" "]; 
NSString *dateWithTime1InString = [myFireDateInString stringByAppendingString:time1Str]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSDate *dateWithTime1 = [dateFormatter dateFromString:dateWithTime1InString]; 

NSString *mySecondFireDateInString; 
NSString *dateWithTime2InString; 
NSDate *dateWithTime2; 
if ([time2Str length] !=0){ 
    [dateFormatter setDateFormat:@"yyyy-MM-dd"]; 
    mySecondFireDateInString = [dateFormatter stringFromDate:myfireDate]; 
    mySecondFireDateInString = [mySecondFireDateInString stringByAppendingString:@" "]; 
    dateWithTime2InString = [mySecondFireDateInString stringByAppendingString:time2Str]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
    dateWithTime2 = [dateFormatter dateFromString:dateWithTime2InString]; 
} 

NSString *myThirdFireDateInString; 
NSString *dateWithTime3InString; 
NSDate *dateWithTime3; 
if ([time3Str length]!=0){ 
    [dateFormatter setDateFormat:@"yyyy-MM-dd"]; 
    myThirdFireDateInString = [dateFormatter stringFromDate:myfireDate]; 
    myThirdFireDateInString = [myThirdFireDateInString stringByAppendingString:@" "]; 
    dateWithTime3InString = [myThirdFireDateInString stringByAppendingString:time3Str]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
    dateWithTime3 = [dateFormatter dateFromString:dateWithTime3InString]; 
} 

NSLog(@"%@",dateWithTime3); 
NSLog(@"%@",dateWithTime2); 
    //block starts here 
    void(^notificationBlock)(void) = ^{ 

appDelegate.localNotification1 = [UILocalNotification new]; 
appDelegate.localNotification1.fireDate = dateWithTime1; 
appDelegate.localNotification1.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1; 

if(dateWithTime2 != nil){//Make a new UILocalNotification object 

    appDelegate.localNotification2 = [UILocalNotification new]; 
    appDelegate.localNotification2.fireDate = dateWithTime2; 
    appDelegate.localNotification2.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1; 
} 

if(dateWithTime3 !=nil){//MAke a new UILocalNotification object 
    appDelegate.localNotification3 = [UILocalNotification new]; 
    appDelegate.localNotification3.fireDate = dateWithTime3; 
    appDelegate.localNotification3.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1; 
} 



if([_repeatDaysTextField.text isEqualToString:@"Everyday"]){ 

    // appDelegate.localNotification1.alertBody = @"Time to take your medicine"; 
    appDelegate.localNotification1.repeatInterval = kCFCalendarUnitDay; 
    [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification1]; 

    if(dateWithTime2 != nil){ 
     appDelegate.localNotification2.repeatInterval = kCFCalendarUnitDay; 
     [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification2]; 
     appDelegate.localNotification2.alertBody = @"Not2"; 
     NSLog(@"%@",appDelegate.localNotification2); 
    } 
    NSLog(@"%@",[NSString stringWithFormat:@"%@",dateWithTime3 ]); 
    if(dateWithTime3 != nil){ 

     [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification3]; 
    } 
} 

else if([_repeatDaysTextField.text isEqualToString:@"Alternately"]){ 

} 

else if([_repeatDaysTextField.text isEqualToString:@"Weekly"]){ 
    appDelegate.localNotification1.repeatInterval = kCFCalendarUnitWeekday; 
    [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification1]; 
    if(dateWithTime2!=nil){ 
     [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification2]; 
    } 
    if(dateWithTime3!=nil){ 
     [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification3]; 
    } 
} 

else if([_repeatDaysTextField.text isEqualToString:@"Bi-Weekly"]){ 
} 

else if([_repeatDaysTextField.text isEqualToString:@"Monthly"]){ 
    appDelegate.localNotification1.repeatInterval = kCFCalendarUnitMonth; 
    [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification1]; 
    if(dateWithTime2!=nil){ 
     [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification2]; 
    } 
    if(dateWithTime3!=nil){ 
     [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification3]; 
    } 
} 

else if([_repeatDaysTextField.text isEqualToString:@"Yearly"]){ 
    appDelegate.localNotification1.repeatInterval = kCFCalendarUnitYear; 
    [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification1]; 
    if(dateWithTime2!=nil){ 
     [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification2]; 
    } 
    if(dateWithTime3!=nil){ 
     [[UIApplication sharedApplication]scheduleLocalNotification:appDelegate.localNotification3]; 
    } 
    } 
    }; 
    //block ends here 

    //method to set notification 
    [self setNotification:notificationBlock]; 
    } 




    -(void)setNotification:(void(^)(void))setNotificationBlock{ 

    setNotificationBlock(); 
    } 
+0

,你必須設置通知 – baydi

+0

錯誤可能發生在這裏的代碼粘貼重複計數爲UILocalNotificationInfiniteRepeatCount檢查一次你的UILocalNotification –

+0

的計數這裏是我的代碼.. ... – Reckoner

回答

0

這是發生怎麼一回事,因爲您要設置

appDelegate.localNotification.repeatInterval = someUnit;

嘗試通過檢查repeatCount是否爲0或不按repeatInterval值設置爲1。

+0

您只能設置repeatInterval屬性的預定義枚舉。 – Reckoner

+0

是的,我讀了這個。設置0作爲一個值可以防止無限重複計數,但它不起作用。 – Reckoner

1

我得到了解決方案。在該方法中,didReceiveLocalNotification:,我將通知對象添加到'scheduledNotifications'數組。每次安排通知時,同一個對象被添加到'scheduledNotifications'數組中那一次又一次地被解僱了。

[UIApplication sharedApplication]scheduledNotifications = notification; 

注:忽略didReceiveLocalNotification這一說法:

相關問題