2013-05-29 4 views
10

Kann mir bitte jemand sagen, wie man eine UILocalNotification bekommen, während meine App im Hintergrund ist.Lokale Benachrichtigung im Hintergrund

Ich poste meinen Code hier. Danke im Voraus.

UILocalNotification *localNotif = [[UILocalNotification alloc] init]; 
if (localNotif == nil) 
    return; 
localNotif.fireDate =[startDate addTimeInterval:60]; 
NSLog(@"%@",localNotif.fireDate); 

localNotif.timeZone = [NSTimeZone defaultTimeZone];  
localNotif.alertAction = @"View"; 
localNotif.soundName = UILocalNotificationDefaultSoundName; 

NSString *notifStr=[NSString stringWithFormat:@"Hey looks like you're meeting up with %@, why don't you let your other friends know what fun they're missing out on? Share a photo :)",[itemDict objectForKey:@"fname"]]; 

NSDictionary *infoDict = [NSDictionary dictionaryWithObjectsAndKeys:notifStr ,@"notifKey",nil]; 
localNotif.userInfo = infoDict; 

[[UIApplication sharedApplication] scheduleLocalNotification:localNotif]; 
[localNotif release]; 
+1

Was meinen Sie mit "lokale Benachrichtigung erhalten, während App im Hintergrund ist"? Wenn Sie eine lokale Benachrichtigung planen und sie ausgelöst wird, während sich Ihre App im Hintergrund befindet, wird dem Benutzer eine Warnmeldungsansicht angezeigt, aber das ist es. Sie können keine Nachricht erhalten, in der Ihnen mitgeteilt wird, dass die lokale Benachrichtigung ausgelöst wurde! – Dabrut

+0

BUt in meinem Fall wird es nicht gefeuert. Ich weiß nicht warum? –

+0

Was ist der Wert von StartDate? Versuchen Sie [NSDate dateWithTimeIntervalSinceNow: 60] und entfernen Sie die Zeitzone – Dabrut

Antwort

20
-(void)insert:(NSDate *)fire 
{ 
    [[UIApplication sharedApplication]cancelAllLocalNotifications]; 
    self.localNotification = [[UILocalNotification alloc] init]; 
    if (self.localNotification == nil) 
    { 
     return; 
    } 
    else 
    { 
     self.localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:60]; 
     self.localNotification.alertAction = nil; 
     self.localNotification.soundName = UILocalNotificationDefaultSoundName; 
     self.localNotification.alertBody = @"Hey looks like you're meeting up with %@, why don't you let your other friends know what fun they're missing out on? Share a photo :)"; 
     self.localNotification.alertAction = NSLocalizedString(@"Read Msg", nil); 
     self.localNotification.applicationIconBadgeNumber=1; 
     self.localNotification.repeatInterval=0; 
     [[UIApplication sharedApplication] scheduleLocalNotification:self.localNotification]; 
    } 
} 

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif 
{ 
    [[UIApplication sharedApplication]cancelAllLocalNotifications]; 
    app.applicationIconBadgeNumber = notif.applicationIconBadgeNumber -1; 

    notif.soundName = UILocalNotificationDefaultSoundName; 

    [self _showAlert:[NSString stringWithFormat:@"%@",Your msg withTitle:@"Title"]; 

} 

- (void) _showAlert:(NSString*)pushmessage withTitle:(NSString*)title 
{ 
    [self.alertView_local removeFromSuperview]; 
    self.alertView_local = [[UIAlertView alloc] initWithTitle:title message:pushmessage delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [self.alertView_local show]; 

    if (self.alertView_local) 
    { 
    } 
} 

hoffe, dies wird Ihnen helfen :)

+1

Vielen Dank, es funktionierte b :) –

+1

Ur Willkommen .. :) – Abha

+3

Für iOS 8 oder höher, müssen Sie auch um Benutzerberechtigung fragen: if ([[[UIDevice currentDevice] systemVersion] floatValue]> = 8.0) { [[UIApplication shared] registerUserNotificationSettings: [UIUserNotificationSettings settingsForTypes: (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) Kategorien: nil]]; } –

1

addTimerInterval in iOS 4.0, stellen Sie sicher, dass Sie Implementierungsziel depcrecated wird. Sie können verwenden.

- (id)dateByAddingTimeInterval:(NSTimeInterval)ti 

auch sicherstellen, stellen Sie den richtigen Wert für fireDate

1

Bitte Code unten verwenden.

self.localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:60]; 
    self.localNotification.alertAction = nil; 
    self.localNotification.soundName = UILocalNotificationDefaultSoundName; 
    self.localNotification.alertBody = @"Hey looks like you're meeting up with %@, why don't you let your other friends know what fun they're missing out on? Share a photo :)"; 
    self.localNotification.alertAction = NSLocalizedString(@"Read Msg", nil); 
    self.localNotification.applicationIconBadgeNumber=1; 
    self.localNotification.repeatInterval=0;