2013-05-29 15 views
10

誰でも私のアプリがバックグラウンドにある間にUILocalNotificationを取得する方法を教えてください。バックグラウンドでのローカル通知

私はここに自分のコードを掲載しています。前もって感謝します。

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

「アプリがバックグラウンドの間にローカル通知を受け取る」とはどういう意味ですか?ローカル通知をスケジュールし、アプリがバックグラウンドになっている間に起動すると、ユーザーには警告表示が表示されますが、それだけです。地元の通知が発せられたことを伝えるメッセージを受け取ることはできません! – Dabrut

+0

私の場合、それは起動されていません。どうしてか分かりません? –

+0

startDateの値は何ですか? [NSDate dateWithTimeIntervalSinceNow:60]を試して、タイムゾーンを削除してください。 – Dabrut

答えて

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) 
    { 
    } 
} 

希望に正しい値を設定してください:)

+1

お返事ありがとうございましたb :) –

+1

Ur Welcomeようこそ: – Abha

+3

iOS 8以上の場合は、ユーザの許可も尋ねる必要があります。 if([[UIDevice currentDevice] systemVersion] floatValue]> = 8.0 ) {[[のUIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) カテゴリ:なし]。 } –

1

addTimerIntervalは、iOS 4.0で廃止されました。デプロイメントターゲットを確認してください。あなたは使うことができます。

- (id)dateByAddingTimeInterval:(NSTimeInterval)ti 

また、あなたは、これはあなたを助けるfireDate

1

コードの下に使用してください。

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; 
関連する問題