UILocalNotification触发多次

时间:2016-12-14 07:00:29

标签: ios objective-c uilocalnotification

我正在使用UILocalNotification,这是我的代码

-(void)notificationScheduler
{
    UILocalNotification* localNotification = [[UILocalNotification alloc] init];
   // localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:7];
    localNotification.alertBody = @"NPS message";
    localNotification.timeZone = [NSTimeZone defaultTimeZone];
    localNotification.soundName = UILocalNotificationDefaultSoundName;
    localNotification.repeatInterval = 0;
    //Setting badge
    [UIApplication sharedApplication].applicationIconBadgeNumber += 1;
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}

我在按钮点击操作中调用此方法。通知正在连续发送给手机。

我尝试使用此代码停止通知

- (void)application:(UIApplication *)application
didReceiveLocalNotification:(UILocalNotification *)notification{
    NSLog(@"didReceiveLocalNotification");
    [application cancelLocalNotification:notification];

}

didReceiveLocalNotification方法未被调用。

按钮操作代码

- (IBAction)btnSendClicked:(id)sender
{

    [self notificationScheduler ];

    // saves in dB of sttarter and then reloads tableview to display the message.

    if (![self.txtMessage.text isEqualToString:@""])
    {
        // publish message
        [objSttarter SttarterClassPublishTopic:strTopicIdToCompare strData:self.txtMessage.text];

        NSMutableDictionary *dctMessage = [[NSMutableDictionary alloc]init];
        [dctMessage setValue:@"message" forKey:@"type"];
        [dctMessage setValue:@"" forKey:@"timestamp"];
        [dctMessage setValue:@"You" forKey:@"from"];
        [dctMessage setValue:@"none" forKey:@"file_type"];
        [dctMessage setValue:@"" forKey:@"file_url"];
        [dctMessage setValue:@"False" forKey:@"sender"];// false = You sent a msg back.

        NSMutableDictionary *dctPayload =[[NSMutableDictionary alloc]init];
        [dctPayload setValue:@"" forKey:@"title"];
        [dctPayload setValue:strTopicIdToCompare forKey:@"topic"];//*
        [dctPayload setValue:self.txtMessage.text forKey:@"message"];//*
        [dctMessage setValue:dctPayload forKey:@"payload"];

        [[DatabaseHandler sharedDatabaseHandler] insertDataToMessages:dctMessage];

//        NSIndexPath *path1 = [NSIndexPath indexPathForRow:arrmsg.count inSection:0];
//        NSArray *indexArray = [NSArray arrayWithObjects:path1,nil];
//        [arrmsg addObject:self.txtMessage.text];
//        [self.tableviewChat beginUpdates];
//        [self.tableviewChat insertRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationNone];
//        [self.tableviewChat endUpdates];
//        [self.view endEditing:YES];
//        self.txtMessage.text=@"";

     self.txtMessage.text =@"";

    }
}

1 个答案:

答案 0 :(得分:0)

我将appdelegate didReceiveLocalNotification代码更改为此代码并且有效。

- (void)application:(UIApplication *)application
didReceiveLocalNotification:(UILocalNotification *)notification
{
    NSLog(@"didReceiveLocalNotification");
    [application cancelLocalNotification:notification];
    [[UIApplication sharedApplication] cancelAllLocalNotifications];


}